php对图像的各种处理函数代码小结


Posted in PHP onJuly 08, 2013

一、创建图片资源

imagecreatetruecolor(width,height);
imagecreatefromgif(图片名称);
imagecreatefrompng(图片名称);
imagecreatefromjpeg(图片名称);画出各种图像 imagegif(图片资源,保存路径);
imagepng()
imagejpeg();

二、获取图片属性

imagesx(res//宽度
imagesy(res//高度
getimagesize(文件路径)
返回一个具有四个单元的数组。索引 0 包含图像宽度的像素值,索引 1 包含图像高度的像素值。索引 2 是图像类型的标记:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。这些标记与 PHP 4.3.0 新加的 IMAGETYPE 常量对应。索引 3 是文本字符串,内容为“height="yyy" width="xxx"”,可直接用于 IMG 标记。
销毁图像资源
imagedestroy(图片资源);

三、透明处理

PNG、jpeg透明色都正常,只有gif不正常

imagecolortransparent(resource image [,int color])//将某个颜色设置成透明色
imagecolorstotal()
imagecolorforindex();

四、图片的裁剪

imagecopyresized()
imagecopyresampled();

五、加水印(文字、图片)

字符串编码转换string iconv ( string $in_charset , string $out_charset , string $str )

六、图片旋转

imagerotate();//制定角度的图片翻转

七、图片的翻转

沿X轴   沿Y轴翻转

八、锐化

imagecolorsforindex()

imagecolorat()

在图片上画图形  $img=imagecreatefromgif("./images/map.gif");

 $red= imagecolorallocate($img, 255, 0, 0);
 imageline($img, 0, 0, 100, 100, $red);
 imageellipse($img, 200, 100, 100, 100, $red);
 imagegif($img, "./images/map2.gif");
 imagedestroy($img);

图片普通缩放

$filename="./images/hee.jpg";
 $per=0.3;
 list($width, $height)=getimagesize($filename);
 $n_w=$width*$per;
 $n_h=$width*$per;
 $new=imagecreatetruecolor($n_w, $n_h);
 $img=imagecreatefromjpeg($filename);
//拷贝部分图像并调整
 imagecopyresized($new, $img,0, 0,0, 0,$n_w, $n_h, $width, $height);
//图像输出新图片、另存为
 imagejpeg($new, "./images/hee2.jpg");
 imagedestroy($new);
 imagedestroy($img);

图片等比例缩放、没处理透明色
function thumn($background, $width, $height, $newfile) {
 list($s_w, $s_h)=getimagesize($background);//获取原图片高度、宽度
 if ($width && ($s_w < $s_h)) {
     $width = ($height / $s_h) * $s_w;
 } else {
     $height = ($width / $s_w) * $s_h;
 }
 $new=imagecreatetruecolor($width, $height);
 $img=imagecreatefromjpeg($background);
 imagecopyresampled($new, $img, 0, 0, 0, 0, $width, $height, $s_w, $s_h);
 imagejpeg($new, $newfile);
 imagedestroy($new);
 imagedestroy($img);
}
thumn("images/hee.jpg", 200, 200, "./images/hee3.jpg");

gif透明色处理
function thumn($background, $width, $height, $newfile) {
 list($s_w, $s_h)=getimagesize($background);
 if ($width && ($s_w < $s_h)) {
     $width = ($height / $s_h) * $s_w;
 } else {
     $height = ($width / $s_w) * $s_h;
 }
 $new=imagecreatetruecolor($width, $height);
 $img=imagecreatefromgif($background);
 $otsc=imagecolortransparent($img);
 if($otsc >=0 && $otst < imagecolorstotal($img)){//判断索引色
  $tran=imagecolorsforindex($img, $otsc);//索引颜色值
  $newt=imagecolorallocate($new, $tran["red"], $tran["green"], $tran["blue"]);
  imagefill($new, 0, 0, $newt);
  imagecolortransparent($new, $newt);
 }
 imagecopyresized($new, $img, 0, 0, 0, 0, $width, $height, $s_w, $s_h);
 imagegif($new, $newfile);
 imagedestroy($new);
 imagedestroy($img);
}
thumn("images/map.gif", 200, 200, "./images/map3.gif");

图片裁剪
function cut($background, $cut_x, $cut_y, $cut_width, $cut_height, $location){
 $back=imagecreatefromjpeg($background);
 $new=imagecreatetruecolor($cut_width, $cut_height);
 imagecopyresampled($new, $back, 0, 0, $cut_x, $cut_y, $cut_width, $cut_height,$cut_width,$cut_height);
 imagejpeg($new, $location);
 imagedestroy($new);
 imagedestroy($back);
}
cut("./images/hee.jpg", 440, 140, 117, 112, "./images/hee5.jpg");

图片加水印

文字水印

function mark_text($background, $text, $x, $y){
  $back=imagecreatefromjpeg($background);
  $color=imagecolorallocate($back, 0, 255, 0);
  imagettftext($back, 20, 0, $x, $y, $color, "simkai.ttf", $text);
  imagejpeg($back, "./images/hee7.jpg");
  imagedestroy($back);
 }
 mark_text("./images/hee.jpg", "细说PHP", 150, 250);
//图片水印
function mark_pic($background, $waterpic, $x, $y){
$back=imagecreatefromjpeg($background);
$water=imagecreatefromgif($waterpic);
$w_w=imagesx($water);
$w_h=imagesy($water);
imagecopy($back, $water, $x, $y, 0, 0, $w_w, $w_h);
imagejpeg($back,"./images/hee8.jpg");
imagedestroy($back);
imagedestroy($water);
}
mark_pic("./images/hee.jpg", "./images/gaolf.gif", 50, 200);

图片旋转

$back=imagecreatefromjpeg("./images/hee.jpg");
 $new=imagerotate($back, 45, 0);
 imagejpeg($new, "./images/hee9.jpg");

图片水平翻转垂直翻转
function turn_y($background, $newfile){
  $back=imagecreatefromjpeg($background);
  $width=imagesx($back);
  $height=imagesy($back);
  $new=imagecreatetruecolor($width, $height);
  for($x=0; $x < $width; $x++){
   imagecopy($new, $back, $width-$x-1, 0, $x, 0, 1, $height);
  }
  imagejpeg($new, $newfile);
  imagedestroy($back);
  imagedestroy($new);
 }
 function turn_x($background, $newfile){
  $back=imagecreatefromjpeg($background);
  $width=imagesx($back);
  $height=imagesy($back);
  $new=imagecreatetruecolor($width, $height);
  for($y=0; $y < $height; $y++){
   imagecopy($new, $back,0, $height-$y-1, 0, $y, $width, 1);
  }
  imagejpeg($new, $newfile);
  imagedestroy($back);
  imagedestroy($new);
 }
 turn_y("./images/hee.jpg", "./images/hee11.jpg");
 turn_x("./images/hee.jpg", "./images/hee12.jpg");

 图片锐化
function sharp($background, $degree, $save){
 $back=imagecreatefromjpeg($background);
 $b_x=imagesx($back);
 $b_y=imagesy($back);
 $dst=imagecreatefromjpeg($background);
 for($i=0; $i<$b_x; $i++){
  for($j=0; $j<$b_y; $j++){
   $b_clr1=imagecolorsforindex($back, imagecolorat($back, $i-1, $j-1));\\前一个像素颜色数组
   $b_clr2=imagecolorsforindex($back, imagecolorat($back, $i, $j));\\取出当前颜色数组
   $r=intval($b_clr2["red"]+$degree*($b_clr2["red"]-$b_clr1["red"]));\\加深
   $g=intval($b_clr2["green"]+$degree*($b_clr2["green"]-$b_clr1["green"]));
   $b=intval($b_clr2["blue"]+$degree*($b_clr2["blue"]-$b_clr1["blue"]));
   $r=min(255, max($r, 0));//限制r范围在0-255之间
   $g=min(255, max($g, 0));
   $b=min(255, max($b, 0));
   if(($d_clr=imagecolorexact($dst, $r, $g, $b))==-1){//等于1不在颜色范围内
    $d_clr=Imagecolorallocate($dst, $r, $g, $b);//创建一个颜色
   }
   imagesetpixel($dst, $i, $j, $d_clr);
  }
 }
 imagejpeg($dst, $save);
 imagedestroy($back);
 imagedestroy($dst);
}
sharp("./images/hee.jpg", 20, "./images/hee13.jpg");
PHP 相关文章推荐
在IIS上安装PHP4.0正式版
Oct 09 PHP
php面向对象全攻略 (八)重载新的方法
Sep 30 PHP
php 自写函数代码 获取关键字 去超链接
Feb 08 PHP
php 数组使用详解 推荐
Jun 02 PHP
php分页思路以及在ZF中的使用
May 30 PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 PHP
PHP生成不重复标识符的方法
Nov 21 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
php截取视频指定帧为图片
May 16 PHP
php中文乱码问题的终极解决方案汇总
Aug 01 PHP
php 将json格式数据转换成数组的方法
Aug 21 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
Mar 18 PHP
php/js获取客户端mac地址的实现代码
Jul 08 #PHP
关于PHP语言构造器介绍
Jul 08 #PHP
php5.5新数组函数array_column使用
Jul 08 #PHP
PHP 关于访问控制的和运算符优先级介绍
Jul 08 #PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 #PHP
php采集文章中的图片获取替换到本地(实现代码)
Jul 08 #PHP
php打开文件fopen函数的使用说明
Jul 05 #PHP
You might like
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
php str_pad 函数用法简介
2009/07/11 PHP
php Ubb代码编辑器函数代码
2012/07/05 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
php中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
给Python入门者的一些编程建议
2015/06/15 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
python读取Kafka实例
2019/12/23 Python
Django设置Postgresql的操作
2020/05/14 Python
python super()函数的基本使用
2020/09/10 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
Kickers鞋英国官网:男士、女士和儿童鞋
2021/03/08 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
职业生涯规划书结束语
2014/04/15 职场文书
初中班主任评语大全
2014/04/24 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
我的长征观后感
2015/06/09 职场文书