解析php中两种缩放图片的函数,为图片添加水印


Posted in PHP onJune 14, 2013

有两种改变图像大小的方法.
(1):ImageCopyResized() 函数在所有GD版本中有效,但其缩放图像的算法比较粗糙.
(2):ImageCopyResampled(),其像素插值算法得到的图像边缘比较平滑.质量较好(但该函数的速度比 ImageCopyResized() 慢).
两个函数的参数是一样的.如下:
ImageCopyResampled(dest,src,dx,dy,sx,sy,dw,dh,sw,sh);
ImageCopyResized(dest,src,dx,dy,sx,sy,dw,dh,sw,sh
);
它们两个都是从原图像(source)中抓取特定位置(sx,sy)复制图像qu区域到目标t 图像(destination)的特定位置(dx,dy)。另外dw,dh指定复制的图像区域在目标图像上的大小,sw,sh指定从原图像复制的图像区域 的大小。如果有ps经验的话,就相当于在原图像选择一块区域,剪切移动到目的图像上,同时有拉伸或缩小的操作。
例一:
(本例子是将图片按原大小的4/1的大小显示)

<?php
// 指定文件路径和缩放比例
$filename = 'test.jpg';
$percent = 0.5;
// 指定头文件Content typezhi值
header('Content-type: image/jpeg');
// 获取图片的宽高
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
// 创建一个图片。接收参数分别为宽高,返回生成的资源句柄
$thumb = imagecreatetruecolor($newwidth, $newheight);
//获取源文件资源句柄。接收参数为图片路径,返回句柄
$source = imagecreatefromjpeg($filename);
// 将源文件剪切全部域并缩小放到目标图片上。前两个为资源句柄
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// 输出给浏览器
imagejpeg($thumb);
?>

推荐一个简单实用的缩放图片工具 SimpleImage,参考http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/
使用方法:
<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resize(250,400);
   $image->save('picture2.jpg');?>
设定宽度,等比例缩放
<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToWidth(250);
   $image->save('picture2.jpg');?>
设定高度,等比例缩放
<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToHeight(500);
   $image->save('picture2.jpg');
   $image->resizeToHeight(200);
   $image->save('picture3.jpg');?>
按比例,缩放至50%
<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->scale(50);
   $image->save('picture2.jpg');?>
缩放后直接输出到屏幕
<?php
   header('Content-Type: image/jpeg');
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToWidth(150);
   $image->output();?>

SimpleImage.php 源码请轻点文章开头链接,到那下载
--------------------------------------------------------------------------------
为图片加上水印
<?php
  $source=imagecreatefromjpeg('E:/image/guide_pic.jpg');
  $thumb=imagecreatefromjpeg('E:/image/l.JPG');
//取得图片的宽度,高度,类型
  list($width,$height,$mine)=getimagesize('E:/image/guide_pic.jpg');
  imagecopymerge ($source,$thumb,$width-124,$height-150,0,0,88,73,70);
//生成图片
  imagejpeg($source,'E:/image/logo.jpg');
?>

PHP 相关文章推荐
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 PHP
php生成xml简单实例代码
Dec 16 PHP
解析PHP多种序列化与反序列化的方法
Jun 06 PHP
php二维数组排序详解
Nov 06 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
Aug 10 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
PHP中递归的实现实例详解
Nov 14 PHP
PHP+JS实现的实时搜索提示功能
Mar 13 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
Jun 12 PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 PHP
PHP操作Memcache实例介绍
Jun 14 #PHP
解析PHP处理换行符的问题 \r\n
Jun 13 #PHP
基于PHP5魔术常量与魔术方法的详解
Jun 13 #PHP
基于PHPExcel的常用方法总结
Jun 13 #PHP
深入PHP FTP类的详解
Jun 13 #PHP
PHP代码审核的详细介绍
Jun 13 #PHP
PHP设计模式之调解者模式的深入解析
Jun 13 #PHP
You might like
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
功能强大的php文件上传类
2016/08/29 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
2013/07/09 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
12岁生日感言
2014/01/21 职场文书
小学生安全责任书
2014/07/25 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python