解析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 相关文章推荐
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
Oct 09 PHP
编写自己的php扩展函数
Oct 09 PHP
php中文字母数字验证码实现代码
Apr 25 PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
Apr 08 PHP
php结合正则批量抓取网页中邮箱地址
May 19 PHP
修复ShopNC使用QQ 互联时提示100010 错误
Nov 08 PHP
Yii2 GridView实现列表页直接修改数据的方法
May 16 PHP
php的socket编程详解
Nov 20 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
PHP实现的观察者模式实例
Jun 21 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 反射(Reflection)使用实例
2015/05/12 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
jQuery 性能优化指南(3)
2009/05/21 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
javascript 数组操作详解
2015/01/29 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
js轮播图无缝滚动效果
2017/06/17 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
Angular4 反向代理Details实践
2018/05/30 Javascript
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Djang中静态文件配置方法
2015/07/30 Python
python脚本设置超时机制系统时间的方法
2016/02/21 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
python实现广度优先搜索过程解析
2019/10/19 Python
python无序链表删除重复项的方法
2020/01/17 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
交通专业个人自荐信格式
2013/09/23 职场文书
教育科学研究生自荐信
2013/10/09 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
个人委托书如何写
2014/09/25 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
Python实现批量将文件复制到新的目录中再修改名称
2022/04/12 Python
详解CSS3浏览器兼容
2022/12/24 HTML / CSS