Home > Backend Development > PHP Tutorial > Implement image sharpening code using PHP_PHP tutorial

Implement image sharpening code using PHP_PHP tutorial

WBOY
Release: 2016-07-21 15:55:17
Original
1069 people have browsed it


//Type of read image

//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);}   

 //Image sharpening   

 //$scr_im : Image resource handle, $degree: sharpening 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"])); ]-$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
";

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("The specified file does not exist or is not a valid image or does not support the type! ");

if ($ImageType==6) $ImageType = 0;

if ($ImageType>3) die("Unsupported image type!");  

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

  }   

  ?>  

    

  请输入图片的本地路径或URL:
  

  " size=32>
  

  锐化度数(例:0.6、3.0):
  

  ">
  

    

     

   改了一下,省了一个$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
";  

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

   }  

  }

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/318293.htmlTechArticle? //读取图像的类型 //1=GIF,2=JPG,3=PNG,4=SWF,5=PSD,6=BMP,7=TIFF(intelbyteorder),8=TIFF(motorolabyteorder),9=JPC,10=JP2,11=JPX,12=JB2,13=SWC,14=IFF functionGetImageType($filen...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template