解析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 26 PHP
56.com视频采集接口程序(PHP)
Sep 22 PHP
PHP 创建标签云函数代码
May 26 PHP
php抽奖小程序的实现代码
Jun 18 PHP
php实现的获取网站备案信息查询代码(360)
Sep 23 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
PHP简单实现正则匹配省市区的方法
Apr 13 PHP
php实现表单提交上传文件功能
May 28 PHP
PHP常量define和const的区别详解
May 18 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 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编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
Python检测网络延迟的代码
2018/05/15 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
python爬虫---requests库的用法详解
2020/09/28 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
SQL中where和having的区别
2012/06/17 面试题
你们项目是如何进行变更控制的
2015/08/26 面试题
机电一体化专业应届生求职信
2013/11/27 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
解除财产保全担保书
2014/05/20 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
北京导游词
2015/02/12 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android