解析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网站提速三大“软”招
Oct 09 PHP
PHP脚本的10个技巧(4)
Oct 09 PHP
php中经典方法实现判断多维数组是否为空
Oct 23 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
php使用指定编码导出mysql数据到csv文件的方法
Mar 31 PHP
PHP+Javascript实现在线拍照功能实例
Jul 18 PHP
php多线程实现方法及用法实例详解
Oct 26 PHP
PHP 类与构造函数解析
Feb 06 PHP
php实现socket推送技术的示例
Dec 20 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 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中通过smtp发邮件的类,测试通过
2007/01/22 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
PHP中Array相关函数简介
2016/07/03 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
Axios学习笔记之使用方法教程
2017/07/21 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
微信小程序实现图片预览功能
2018/01/31 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
python使用opencv进行人脸识别
2017/04/07 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
大学生创业计划书的格式要求
2013/12/29 职场文书
电大会计学自我鉴定
2014/02/06 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
小学中队委竞选稿
2015/11/20 职场文书
企业愿景口号
2015/12/25 职场文书
基于angular实现树形二级表格
2021/10/16 Javascript