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 = JP 2, 11 = JPX 12 = JB 2、 13 = SWC 14 = IF   機能 GetImageType($filename) {return (($imgifo=@getimagesize($filename)!null ? $imgifo[2] : null);      //画像のシャープ化   //scr_im:画像リソースハンドル、degree:シャープ化度数   機能 Sharp(&$src_im &$dst_im $degree   {      $srcusx = イマジクス($src_)im)      $srcusy = イマジジ($src_)im)      //$dst_im = imagcreate($srcu)x, $srcusy):      //イメージコピー($dst_)im $srcusim 0, 0, 0, 0, $srcusx, $srcusy):      $cnt = 0;      for ($x=1; $x<$src_x; $x++)      for ($y=1; $y<$srcuy; $y++)      {      $srcusclr 1 = イマジcolors forindex($src_)im イマジコlorat($srcu)im $x-1, $y-1)      $srcusclr 2 = イマジcolors forindex($src_)im イマジコlorat($srcu)im $x, $y);      $r = intval($src_)clr 2[[red]+$degree*($src_]clr 2[red]-$clr 1[red]);      $g = intval($src_)clr 2[[green]+$degree*($src_]clr 2[green]-$src_clr 1[green]);      $b = intval($src_)clr 2[blue]+$degree*($src_)clr 2[blue]-$srcuclr 1[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=imagcolorexact($dst_)im $r, $g, $b)===-1)      $dst_clr = Imagecolorallate($dst_)im $r, $g, $b):      $cnt++;      if ($dst_clr==-1) ディエ allocate faile at。 $x, $y ($cnt.「;」      imagset pixel($dst_)im $x, $y, $dst_clr「clr」      }      return $dst_im;   )      $ImageFunctions = array(「imagcreatefrowbmp」、 "イメージクリエティーfroomgif「 "イメージクリエティーfrom jpeg”、 "イメージクリエティーfrome");    if (!empty($uPOST["ImageName")   {      settime_limit(10*60)      if (($ImageType=GetImageType($u)POST["ImageName")==false]      die(指定ファイルが存在しないか、有効でないか、またはタイプをサポートしていないか!)      if ($ImageType==6) $ImageType = 0;      if ($ImageType>3) die(「サポートされていない画像タイプ!」)      $im 1 = $ImageFuntions[$ImageType]($uPOST["ImageName]]      $im 2 = $ImageFuntions[$ImageType]($uPOST["ImageName]]      //printr(imagcolors forindex($im) イメージカラー($im、 10, 10))      Sharp($im 1) $im 2, $_POST["Degree");      ヘader(「Conttentt-type: イメージ      イメージアップ($im 2)      imagdestroy($im 1)      imagdestroy($im 2)   )     ?>   <フォームm name=「FormName」 action=「」 method=「post」   画像のローカルパスまたはURLを入力してください:
   <input name=「ImageName」 type=「text」 value="<?=>_POST["ImageName"?>" size=32>
   シャープ化度数(例:0.6、3.0):
   <input name=「Degree」 type=「text」 value="<?=>_POST["Degree"?><>br/>   <input type=「submit」 value=「提出」         変更しました。$imを節約しました。        機能 Sharp 2(&$im、 $degree   {      $cnt = 0;      for ($x=imagsx($im)-1 $x>0 $x--)      for ($y=imagsy($im)-1 $y>0 $y--)      {      $clr 1 = imagcolors forindex($im) イメージカラー($im、 $x-1, $y-1)      $clr 2 = imagcolors forindex($im) イメージカラー($im、 $x, $y);      $r = intval($clr 2["red]+$degree*($clr 2["red]-$clr 1["red])));      $g = intval($clr 2[[green]]+$degree*($clr 2["green]-$clr 1["green]));      $b = intval($clr 2[[blue]]+$degree*($clr 2["blue]-$clr 1["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=imagcolorexact($im) $r, $g, $b)===-1)      $new_clr = Imagecolorallate($im) $r, $g, $b):      $cnt++;      if ($new_clr==-1) ディエ allocate faile at。 $x, $y ($cnt.「;」      imagset pixel($im) $x, $y, $new_clr「clr」      }   )