解析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 相关文章推荐
模仿OSO的论坛(四)
Oct 09 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
php strnatcmp()函数的用法总结
Nov 27 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
Jun 23 PHP
Php-Redis安装测试笔记
Mar 05 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
不常用但很实用的PHP预定义变量分析
Jun 25 PHP
PHP7 其他修改
Mar 09 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大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
递归删除一个节点以及该节点下的所有节点示例
2014/03/19 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
javascript编程起步(第六课)
2007/01/10 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
原生JS实现的碰撞检测功能示例
2018/05/18 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
python在OpenCV里实现投影变换效果
2019/08/30 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
Python实现京东抢秒杀功能
2021/01/25 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
旧时光糖果:Old Time Candy
2018/02/05 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
建筑专业毕业生推荐信
2013/11/21 职场文书
小学生获奖感言范文
2014/02/02 职场文书
学校春季防火方案
2014/06/08 职场文书
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js