解析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结合飞信 免费天气预报短信
May 07 PHP
PHP技术开发技巧分享
Mar 23 PHP
php记录日志的实现代码
Aug 08 PHP
PHP编码规范的深入探讨
Jun 06 PHP
解析php中反射的应用
Jun 18 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
Apr 17 PHP
7个鲜为人知却非常实用的PHP函数
Jul 01 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
php使用array_chunk函数将一个数组分割成多个数组
Dec 05 PHP
laravel添加前台跳转成功页面示例
Oct 22 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 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
中国第一家无线电行
2021/03/01 无线电
在项目中寻找代码的坏命名
2012/07/14 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
浅说js变量
2011/05/25 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
vue 运用mock数据的示例代码
2017/11/07 Javascript
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
Python对象体系深入分析
2014/10/28 Python
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
pandas数据处理基础之筛选指定行或者指定列的数据
2018/05/03 Python
python和opencv实现抠图
2018/07/18 Python
python绘制热力图heatmap
2020/03/23 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
教师自我评价范例
2013/09/24 职场文书
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
领导欢迎词范文
2015/01/26 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
思想工作总结范文
2015/08/12 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL