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

一、创建图片资源

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");

(0)

相关推荐

  • 2014年10个最佳的PHP图像操作库

    Thomas Boutell 以及众多的开发者创造了以GD图形库闻名的一个图形软件库,用于动态的图形计算. GD提供了对于诸如C, Perl, Python, PHP, OCaml等等诸多编程语言的支持. 除了生成HTML输出之外, 你还可以使用php以众多的像 PNG, JPEG, GIF, WBMP,以及 XPM这样的图形文件格式来创建和计算图形文件. 并且,php的使用还能让你可以直接向一个浏览器输出图像流. 为了做到这一点,你需要借助于GD库图像功能的使用来编译php. 在这篇文章中,你

  • PHP图片裁剪函数(保持图像不变形)

    为了完成图片上传之后自动的裁剪,然后在前台显示出裁剪出的图片.需求如上,源码如下: 复制代码 代码如下: <? *exif_imagetype -- 判断一个图像的类型 *说明:函数功能是把一个图像裁剪为任意大小的图像,图像不变形 * 参数说明:输入 需要处理图片的 文件名,生成新图片的保存文件名,生成新图片的宽,生成新图片的高 */ // 获得任意大小图像,不足地方拉伸,不产生变形,不留下空白         function my_image_resize($src_file, $dst_f

  • PHP中绘制图像的一些函数总结

    在PHP中绘制图像的函数非常丰富,包括点.线.各种几何图形等可以想象出来的平面图形,都可以通过PHP中提供的各种画图函数完成.我们在这里介绍一些常用的图像绘制,如果使用我们没有介绍过的函数,可以参考手册实现.另外,这些图形绘制函数都需要使用画布资源,并在画布中的位置通过坐标(原点是在画布左上角的起始位置,以像素为单位,沿着X轴正方向向右延伸,Y轴正方向向下延伸)决定,并且还可以通过函数的最后一个参数,设置每个图形的颜色.画布中的坐标系统如图所示. 一.函数图形区域填充imageFill() 通过

  • PHP图像处理类库及演示分享

    简单写了一个PHP的图像处理类库,虽然功能比较少,但是目前也没用到太高级的,以后用到了再填吧,或者哪位给点建议加上什么功能,或者有什么需求可以跟我说,我有时间加上,如果哪位对这个类库进行了扩展的话,还麻烦拿出来大家分享一下,代码现在是能用就行,考虑的东西不是很多,有什么更好的建议请告诉我,谢谢 Img.php <?php /** * Created by PhpStorm. * User: MCtion * Date: 2015/5/14 0014 * Time: 15:36 * 简单的图像类库

  • 为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法

    今天在新服上安装php imagick, 环境如下: php 5.4.13 ImageMagick-6.8.3-10 imagick-3.0.1 可是出错了一个问题.就是死说找不到MagickWand.h: checking for MagickWand.h header file... configure: error: Cannot locate header file MagickWand.h 可是我明明正确安装了ImageMagick的呀.GOOGLE了半天,也解决不了这个问题.后面对照

  • php图像生成函数之间的区别分析

    新手对php图像生成函数imagecreatetruecolor()和imagecreate()又不解之处,首先来看看官方对这两个函数的解释: resource imagecreatetruecolor ( int $x_size , int $y_size ) 返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像. resource imagecreate ( int $x_size , int $y_size ) 返回一个图像标识符,代表了一幅大小为 两者在改变背

  • PHP图像处理类库MagickWand用法实例分析

    本文实例讲述了PHP图像处理类库MagickWand用法.分享给大家供大家参考.具体分析如下: MagickWand 是PHP的一个扩展程序,通过它建立起与ImageMagick的交互,进行图片的处理.它是默认的GD图象函数库的绝佳替代方案.从安全性和易用性来说,在PHP中使用MagickWand比使用命令行ImageMagick要安全快捷的多.另外 imagick也可用于PHP中作为ImageMagick的替代方案. MagickWand 有两种形式, 只是建立与ImageMagick的交互,

  • PHP GD库生成图像的几个函数总结

    使用GD库中提供的函数动态绘制完成图像以后,就需要输出到浏览器或者将图像保存起来.在PHP中,可以将动态绘制完成的画布,直接生成GIF.JPEG.PNG和WBMP四种图像格式.可以通过调用下面四个函数生成这些格式的图像: 复制代码 代码如下: bool imagegif(resource $image[,string $filename])                              //以GIF格式将图像输出 bool imagejpeg(resource $image[,str

  • 一个经典实用的PHP图像处理类分享

    本图像处理类可以完成对图片的缩放.加水印和裁剪的功能,支持多种图片类型的处理,缩放时进行优化等. <?php /** file: image.class.php 类名为Image 图像处理类,可以完成对各种类型的图像进行缩放.加图片水印和剪裁的操作. */ class Image { /* 图片保存的路径 */ private $path; /** * 实例图像对象时传递图像的一个路径,默认值是当前目录 * @param string $path 可以指定处理图片的路径 */ function

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

    一.创建图片资源 imagecreatetruecolor(width,height);imagecreatefromgif(图片名称);imagecreatefrompng(图片名称);imagecreatefromjpeg(图片名称);画出各种图像 imagegif(图片资源,保存路径);imagepng()imagejpeg(); 二.获取图片属性 imagesx(res//宽度imagesy(res//高度getimagesize(文件路径)返回一个具有四个单元的数组.索引 0 包含图像

  • PHP删除非空目录的函数代码小结

    有了这个小程序,PHPer就不用手动进行删除计算机上的目录文件了,在练习PHP目录文件操作时就可以用这个函数,在这个基础上还可以增加浏览文件夹目录,然后进行删除. 代码一: 复制代码 代码如下: <?php function d_rmdir($dirname) {   //删除非空目录 if(!is_dir($dirname)) { return false; } $handle = @opendir($dirname); while(($file = @readdir($handle)) !=

  • Python+OpenCV实现图像融合的原理及代码

    根据导师作业安排,在学习数字图像处理(刚萨雷斯版)第六章 彩色图像处理 中的彩色模型后,导师安排了一个比较有趣的作业: 融合原理为: 1 注意:遥感原RGB图image和灰度图Grayimage为测试用的输入图像: 2 步骤:(1)将RGB转换为HSV空间(H:色调,S:饱和度,V:明度): (2)用Gray图像诶换掉HSV中的V: (3)替换后的HSV转换回RGB空间即可得到结果. 书上只介绍了HSI彩色模型,并没有说到HSV,所以需要网上查找资料. Python代码如下: import cv

  • Python中enumerate函数代码解析

    enumerate函数用于遍历序列中的元素以及它们的下标. enumerate函数说明: 函数原型:enumerate(sequence, [start=0]) 功能:将可循环序列sequence以start开始分别列出序列数据和数据下标 即对一个可遍历的数据对象(如列表.元组或字符串),enumerate会将该数据对象组合为一个索引序列,同时列出数据和数据下标. 举例说明: 存在一个sequence,对其使用enumerate将会得到如下结果: start        sequence[0]

  • javascript 四则运算精度修正函数代码

    函数代码如下: 复制代码 代码如下: /* * 四则运算精度修正函数 * m 数值1(number) * n 数值2(number) * op 操作符(string) */ function fixMath(m, n, op) { var a = (m+ " "); var b = (n+ " "); var x = 1; var y = 1; var c = 1; if(a.indexOf( ". ")> 0) { x = Math.po

  • PHP 循环列出目录内容的函数代码

    复制代码 代码如下: function list_files($dir) { if(is_dir($dir)) { if($handle = opendir($dir)) { while(($file = readdir($handle)) !== false) { if($file != "." && $file != ".." && $file != "Thumbs.db") { echo '<a tar

  • 做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)

    asp函数代码: 复制代码 代码如下: function checkip(checkstring)'用正则判断IP是否合法dim re1set re1=new RegExpre1.pattern="^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$"re1.global=falsere1.Ignorecase=falsecheckip=re1.test(checkstring)set re1=nothingend function functio

  • PHP 创建标签云函数代码

    复制代码 代码如下: function getCloud( $data = array(), $minFontSize = 12, $maxFontSize = 30 ) { $minimumCount = min( array_values( $data ) ); $maximumCount = max( array_values( $data ) ); $spread = $maximumCount - $minimumCount; $cloudHTML = ''; $cloudTags =

  • C#实现为类和函数代码自动添加版权注释信息的方法

    本文实例讲述了C#实现为类和函数代码自动添加版权注释信息的方法,分享给大家供大家参考之用.具体方法如下: 以web项目为例: 一:给类加注释 1.在visual studio 的安装路径下 如:[盘符]:/Program files/Microsoft Visual Studio 8/Common7/IDE/ItemTemplates/web/cshare/2052/class.zip ,将里面的class.cs改为: /*------------------------------------

  • PHP 强制性文件下载功能的函数代码(任意文件格式)

    复制代码 代码如下: /******************** *@file - path to file */ function force_download($file) { if ((isset($file))&&(file_exists($file))) { header("Content-length: ".filesize($file)); header('Content-Type: application/octet-stream'); header('

随机推荐