解析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获得文件扩展名三法
Nov 25 PHP
PHP如何得到当前页和上一页的地址?
Nov 27 PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
ThinkPHP的URL重写问题
Jun 22 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
关于URL最大长度限制的相关资料查证
Dec 23 PHP
php实现猴子选大王问题算法实例
Apr 20 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
php+redis消息队列实现抢购功能
Feb 08 PHP
在laravel中使用with实现动态添加where条件
Oct 10 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 Memcache 中实现消息队列
2009/11/24 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
thinkPHP5.0框架简单配置作用域的方法
2017/03/17 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
2019/07/30 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
python输入整条数据分割存入数组的方法
2018/11/13 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
Pycharm github配置实现过程图解
2020/10/13 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
计算机专业大学生的自我评价
2013/11/14 职场文书
优秀中专生推荐信
2013/11/17 职场文书
芙蓉镇观后感
2015/06/10 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书