<
//読み込む画像の種類
//1 = GIF、2 = JPG、3 = PNG、4 = SWF、5 = PSD、6 = BMP、7 = TIFF (インテル バイト オーダー)、8 = TIFF ( Motorola バイトオーダー)、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: 鮮鋭化の度合い
関数 Sharp(&$src_im, &$dst_im, $degree )
{
$src_x = imagex($src_im);
$src_y = imagey($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, ImageColoraat ($ src_im, $ x-1, $ y-1)); ;
$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))
$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);
if ($dst_clr==-1) die ("color assign failed at $x, $y ($cnt).");
imagesetpixel($dst_im, $x, $y, $dst_clr);
}
return $dst_im;
}
functions = array( "imagecreatefromwbmp", "imagecreatefromgif", "imagecreatefromjpeg", "imagecreatefrompng");
if (!empty($_POST["ImageName"]))
set_time_limit(10*60)
if (($Im ageType=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"); $im2);
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)); 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
"; ($new_clr= imagecolorexact($im, $r, $g, $b))==-1)
$new_clr = Imagecolorallocate($im, $r, $g, $b)
$cnt++; if ( $new_clr== -1) die("$x, $y ($cnt) でカラー割り当てに失敗しました。");
imagesetpixel($im, $x, $y, $new_clr); }
上記では、httpcreditcard.bankcomm.com が PHP を使用して実装した画像鮮明化コードを、httpcreditcard.bankcomm.com の内容を含めて紹介します。PHP チュートリアルに興味のある友人に役立つことを願っています。