PHP中实现图片的锐化

一直想留出来啊

一直想留出来啊

2016-01-29 15:02

PHP中实现图片的锐化,PHP中实现图片的锐化
 

  <?

  //读取图像的类型

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/php/)

   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 ($ImageType3) 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)

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/php/)

  {

   $cnt = 0;

   for ($x=imagesx($im)-1; $x0; $x--)

   for ($y=imagesy($im)-1; $y0; $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)

展开更多 50%)
分享

猜你喜欢

PHP中实现图片的锐化

PHP
PHP中实现图片的锐化

photoshop锐化图片教程 Photoshop锐化图片技巧

PS教程 PS基础
photoshop锐化图片教程 Photoshop锐化图片技巧

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

PHP实现图片简单上传

PHP
PHP实现图片简单上传

PHP 实现的将图片转换为TXT

PHP
PHP 实现的将图片转换为TXT

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

图片模糊、锐化、雕刻

编程语言 网络编程
图片模糊、锐化、雕刻

PHP中实现进程间通讯

PHP
PHP中实现进程间通讯

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

浅析《世界OL》锤子的未来和出路

浅析《世界OL》锤子的未来和出路

PHP发现安全漏洞

PHP发现安全漏洞
下拉加载更多内容 ↓