解析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编程之高级技巧——利用Mysql函数
Oct 09 PHP
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
Nov 10 PHP
PHP中file_exists与is_file,is_dir的区别介绍
Sep 12 PHP
php连接oracle数据库及查询数据的方法
Dec 29 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
PHP语法小结之基础和变量
Nov 22 PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 PHP
微信红包随机生成算法php版
Jul 21 PHP
Laravel中错误与异常处理的用法示例
Sep 16 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 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 数组遍历顺序理解
2009/09/09 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
python中的协程深入理解
2019/06/10 Python
Python求解正态分布置信区间教程
2019/11/20 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
How to spawning asynchronous work in J2EE
2016/08/29 面试题
上级检查欢迎词
2014/01/18 职场文书
银行优秀员工事迹
2014/02/06 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript