PHP中实现图片的锐化

原创 2004年07月06日 15:35:00

  没错,PHP也可以实现图片的锐化、模糊、浮雕等操作。因为PHP作为网页脚本特长不在此,但在对效率要求不高、又不想使用CGI的情况下,让我们来看看该怎样做。
  下面内容已经被收录在CSDN中PHP的FAQ里:
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=188506

<? 
/*======================================================================
  DESIGN BY :  彭国辉
  SITE:       
http://kacarton.yeah.net/
  BLOG:        http://blog.csdn.net/nhconch
  EMAIL:      
kacarton@sohu.com
  文章为作者原创,转载前请先与本人联系,转载请注明文章出处、保留作者信息,谢谢支持!
======================================================================*/

//读取图像的类型 
//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 
function  GetImageType($filename)  {return  (($imginfo=@getimagesize($filename))!=null  ?  $imginfo[2]  :  null);} 
 
//图像锐化 
//$scr_im:图像资源句柄,$degree:锐化度数 
function  Sharp(&$src_im,  &$dst_im,  $degree) 

       $src_x  =  imagesx($src_im); 
       $src_y  =  imagesy($src_im); 
       //$dst_im  =  imagecreate($src_x,  $src_y); 
       //imagecopy($dst_im,  $src_im,  0,  0,  0,  0,  $src_x,  $src_y); 
       $cnt  =  0; 
       for  ($x=1;  $x<$src_x;  $x++) 
               for  ($y=1;  $y<$src_y;  $y++) 
               { 
                       $src_clr1  =  imagecolorsforindex($src_im,  imagecolorat($src_im,  $x-1,  $y-1)); 
                       $src_clr2  =  imagecolorsforindex($src_im,  imagecolorat($src_im,  $x,  $y)); 
                       $r  =  intval($src_clr2["red"]+$degree*($src_clr2["red"]-$src_clr1["red"])); 
                       $g  =  intval($src_clr2["green"]+$degree*($src_clr2["green"]-$src_clr1["green"])); 
                       $b  =  intval($src_clr2["blue"]+$degree*($src_clr2["blue"]-$src_clr1["blue"])); 
                       $r  =  min(255,  max($r,  0)); 
                       $g  =  min(255,  max($g,  0)); 
                       $b  =  min(255,  max($b,  0)); 
                       //echo  "r:$r,  g:$g,  b:$b<br/>"; 
                       if  (($dst_clr=imagecolorexact($dst_im,  $r,  $g,  $b))==-1) 
                               $dst_clr  =  Imagecolorallocate($dst_im,  $r,  $g,  $b); 
                       $cnt++; 
                       if  ($dst_clr==-1)  die("color  allocate  faile  at  $x,  $y  ($cnt)."); 
                       imagesetpixel($dst_im,  $x,  $y,  $dst_clr); 
               } 
       return  $dst_im; 

 
$ImageFunctions  =  array("imagecreatefromwbmp",  "imagecreatefromgif",  "imagecreatefromjpeg",  "imagecreatefrompng"); 
 
if  (!empty($_POST["ImageName"])) 

       set_time_limit(10*60); 
       if  (($ImageType=GetImageType($_POST["ImageName"]))==false) 
               die("指定文件不存在或不是有效的图片或不支持类型!"); 
       if  ($ImageType==6)  $ImageType  =  0; 
       if  ($ImageType>3)  die("不支持的图片类型!"); 
       $im1  =  $ImageFunctions[$ImageType]($_POST["ImageName"]); 
       $im2  =  $ImageFunctions[$ImageType]($_POST["ImageName"]); 
       //print_r(imagecolorsforindex($im,  imagecolorat($im,  10,  10))); 
       Sharp($im1,  $im2,  $_POST["Degree"]); 
       header("Content-type:  image/png"); 
       imagepng($im2); 
       imagedestroy($im1); 
       imagedestroy($im2); 

 
?> 
<form  name="FormName"  action=""  method="post"> 
请输入图片的本地路径或
URL:<br/
<input  name="ImageName"  type="text"  value="<?=$_POST["ImageName"]?>"  size=32><br/> 
锐化度数(例:0.6、3.0):<br/> 
<input  name="Degree"  type="text"  value="<?=$_POST["Degree"]?>"><br/> 
<input  type="submit"  value="提交"> 
</form> 
 
--------------------------------------------------------------- 
 
改了一下,省了一个$im: 
function  Sharp2(&$im,  $degree) 

       $cnt  =  0; 
       for  ($x=imagesx($im)-1;  $x>0;  $x--) 
               for  ($y=imagesy($im)-1;  $y>0;  $y--) 
               { 
                       $clr1  =  imagecolorsforindex($im,  imagecolorat($im,  $x-1,  $y-1)); 
                       $clr2  =  imagecolorsforindex($im,  imagecolorat($im,  $x,  $y)); 
                       $r  =  intval($clr2["red"]+$degree*($clr2["red"]-$clr1["red"])); 
                       $g  =  intval($clr2["green"]+$degree*($clr2["green"]-$clr1["green"])); 
                       $b  =  intval($clr2["blue"]+$degree*($clr2["blue"]-$clr1["blue"])); 
                       $r  =  min(255,  max($r,  0)); 
                       $g  =  min(255,  max($g,  0)); 
                       $b  =  min(255,  max($b,  0)); 
                       //echo  "r:$r,  g:$g,  b:$b<br>"; 
                       if  (($new_clr=imagecolorexact($im,  $r,  $g,  $b))==-1) 
                               $new_clr  =  Imagecolorallocate($im,  $r,  $g,  $b); 
                       $cnt++; 
                       if  ($new_clr==-1)  die("color  allocate  faile  at  $x,  $y  ($cnt)."); 
                       imagesetpixel($im,  $x,  $y,  $new_clr); 
               } 

PHP 做图片锐化处理

使用PHP做图像锐化处理
  • w_yunlong
  • w_yunlong
  • 2015-12-29 11:55:42
  • 2104

php imagemagick图片处理类

class ThumbHandler { var $dst_img;// 目标文件 var $h_src; // 图片资源句柄 var $h_d...
  • xiaoxuan2015
  • xiaoxuan2015
  • 2016-08-26 18:03:03
  • 1705

图片处理神器ImageMagick以及PHP的imagick扩展

为了提高页面的加载速度,以及减少流量,要针对网站的图片进行瘦身,研究了很多的解决方案,最后确定了使用ImageMagick,了解了这个软件之后,真是如获至宝,简直太好用,效果太明显了。 ImageMa...
  • andy1219111
  • andy1219111
  • 2014-08-01 15:16:41
  • 42913

图像锐化【检测和完善过代码】

此函数利用Lapacian算子实现了图像的锐化,可见于《数字图像获取,处理及实践应用》此书第四章p175页有此程序及相关详细算法说明,下面的程序已经经过在下的修改,接口更好。/************...
  • jianxiong8814
  • jianxiong8814
  • 2007-05-07 16:01:00
  • 1740

【Android图像处理】图像锐化滤镜(效果)/拉普拉斯变化

下面介绍图片的锐化滤镜(拉普拉斯变化) 算法如下: /** * 图片锐化(拉普拉斯变换) * @param bitmap * @return */ public static ...
  • qq_32353771
  • qq_32353771
  • 2016-11-22 21:15:57
  • 1643

强大的PHP 图片处理类(水印、透明度、缩放、锐化、旋转、翻转、剪切、反色)

  • woaixhq
  • woaixhq
  • 2014-01-09 17:32:19
  • 3684

php图像处理(缩放、剪裁、缩放、翻转、旋转、透明、锐化)

本文章来给各同学总结了一些常用的图像处理函数,包括有缩放、剪裁、缩放、翻转、旋转、透明、锐化功能,大家可参考参考。 注意事项:如果要使用php gd处理我们需要开启gd库 ...
  • u012767761
  • u012767761
  • 2017-06-29 19:08:20
  • 603

Java代码实现图片锐化

  • 2010年09月15日 11:21
  • 4KB
  • 下载

数字图像处理图像锐化C++实现

  • 2013年06月26日 11:14
  • 201KB
  • 下载

php图片处理代码分享,包括缩放、剪裁、缩放、翻转、旋转、透明、锐化等

php图片处理代码分享,包括缩放、剪裁、缩放、翻转、旋转、透明、锐化等。需要的朋友可以参考下 一、创建图片资源 imagecreatetruecolor(width,height); image...
  • xiaoxuan2015
  • xiaoxuan2015
  • 2016-08-26 10:38:39
  • 1822
收藏助手
不良信息举报
您举报文章:PHP中实现图片的锐化
举报原因:
原因补充:

(最多只允许输入30个字)