In diesem Artikel wird hauptsächlich die Implementierung von PHP-Code zur Verarbeitung von Bildern vorgestellt. Ich hoffe, dass er für alle hilfreich ist.
1. Bildskalierungscode
Nichtproportionaler Bildskalierungscode
$fileNames='./images/hee.jpg'; list($s_w,$s_h)=getimagesize($fileNames); $per=0.3; $n_w=$s_w*$per; $n_h=$s_h*$per; $s_img=imagecreatefromjpeg($fileNames); $n_img=imagecreatetruecolor($n_w,$n_h); imagecopyresized($n_img,$s_img,0,0,0,0,$n_w,$n_h,$s_w,$s_h); header("Content-Type:image/jpeg"); imagejpeg($n_img,'./images/hee2.jpg'); imagedestroy($n_img); imagedestroy($s_img); function sf($backgroung,$bl,$location){ list($width,$height)=getimagesize($backgroung); $n_w=$width*$bl; $n_h=$height*$bl; $s_img=imagecreatefromjpeg($backgroung); $n_img=imagecreatetruecolor($n_w,$n_h); imagecopyresized($n_img,$s_img,0,0,0,0,$n_w,$n_h,$width,$height); header("Content-Type:image/jpeg"); imagejpeg($n_img,$location); imagedestroy($s_img); imagedestroy($n_img); } //sf('./images/hee.jpg',0.3,'./images/hee9.jpg');Nach dem Login kopieren
Isometrische Bildskalierung (und Hinzufügen transparenter Farbverarbeitung)
function imagesf($backgroung,$n_w,$n_h,$newFiles){ list($s_w,$s_h,$imagetype)=getimagesize($backgroung); //等比例缩放固定算法 if ($n_w && ($s_w < $s_h)) { $n_w = ($n_h / $s_h) * $s_w; } else { $n_h = ($n_w / $s_w) * $s_h; } if($imagetype==2){ $s_img=imagecreatefromjpeg($backgroung); }elseif($imagetype==3){ $s_img=imagecreatefrompng($backgroung); }elseif($imagetype==1){ $s_img=imagecreatefromgif($backgroung); }else{ echo "php 不支持这中图片类型!!"; } $n_img=imagecreatetruecolor($n_w,$n_h); //取得原图形的索引 $img_index=imagecolortransparent($s_img); //判断原图形索引是否在图形调色板的数目范围内(调色板数目 0~255); if($img_index>=0 && $img_index<imagecolorstotal($s_img)){ //返回一个具有 red,green,blue 和 alpha 的键名的关联数组,包含了指定颜色索引的相应的值 $trans=imagecolorsforindex($s_img,$img_index); //print_r($trans); Array ( [red] => 255 [green] => 255 [blue] => 255 [alpha] => 127 ) //取原图的颜色,给新图分配颜色 $n_color=imagecolorallocate($n_img,$trans['red'],$trans['green'],$trans['blue']); imagefill($n_img,0,0,$n_color); //把获取到的颜色,设置为新图的透明色 imagecolortransparent($n_img,$n_color); } //imagecopyresampled($n_img,$s_img,0,0,0,0,$n_w,$n_h,$s_w,$s_h); if(imagetypes()& IMG_JPG){ header("Content-Type:image/jpeg"); imagejpeg($n_img,$newFiles); }elseif(imagetypes()& IMG_PNG){ header("Content-Type:image/png"); imagepng($n_img,$newFiles); }elseif(imagetypes()& IMG_GIF){ header("Content-Type:image/gif"); imagegif($n_img,$newFiles); }else{ echo "php 不支持这中图片类型!!"; } imagedestroy($s_img); imagedestroy($n_img); } imagesf('./images/map.gif',200,200,'./images/map2.gif');Nach dem Login kopieren
2. Bildzuschnittcode
Bildzuschnitt
function imagecut($backgroung,$cut_x,$cut_y,$cut_width,$cut_hight,$fileNames){ list(,,$imagetype)=getimagesize($backgroung); if($imagetype==1){ $s_img=imagecreatefromgif($backgroung); }elseif($imagetype==2){ $s_img=imagecreatefromjpeg($backgroung); }elseif($imagetype==2){ $s_img=imagecreatefrompng($backgroung); }else{ echo "php 不支持这种图片类型!!"; } $n_img=imagecreatetruecolor($cut_width,$cut_hight); imagecopyresized($n_img,$s_img,0,0,$cut_x,$cut_y,$cut_width,$cut_hight,$cut_width,$cut_hight); if(imagetypes() & IMG_GIF){ header("Content-Type:image/gif"); imagegif($n_img,$fileNames); }elseif(imagetypes() & IMG_JPG){ header("Content-Type:image/jpeg"); imagejpeg($n_img,$fileNames); }elseif(imagetypes() & IMG_PNG){ header("Content-Type:image/png"); imagepng($n_img,$fileNames); }else{ echo "php 不支持这种图片类型!!"; } } //imagecut('./images/hee.jpg',52, 47, 345, 330,'./images/hee4.jpg'); function cut($backgroung,$x,$y,$cut_width,$cut_hight,$location){ $s_img=imagecreatefromjpeg($backgroung); $n_img=imagecreatetruecolor($cut_width,$cut_hight); imagecopy($n_img,$s_img,0,0,$x,$y,$cut_width,$cut_hight); header("Content-Type:image/jpeg"); imagejpeg($n_img,$location); imagedestroy($s_img); imagedestroy($n_img); } //cut('./images/hee.jpg',52, 47, 345, 330,'./images/hee8.jpg');Nach dem Login kopieren
Bild zuschneiden und das zugeschnittene Bild skalieren, anstatt das Bild proportional zu skalieren (d. h. einen Teil des Bildes kopieren und seine Größe ändern) imagecopyresized() – einen Teil des Bildes kopieren und seine Größe ändern
imagecopyresampled() – Teil der Bildkopie erneut abtasten und in der Größe ändern
function cutsf($backgroung,$x,$y,$cut_width,$cut_hight,$n_w,$n_h,$location){ $s_img=imagecreatefromjpeg($backgroung); $n_img=imagecreatetruecolor($n_w,$n_h); imagecopyresized($n_img,$s_img,0,0,$x,$y,$n_w,$n_h,$cut_width,$cut_hight); header("Content-Type:image/jpeg"); imagejpeg($n_img,$location); imagedestroy($s_img); imagedestroy($n_img); } cutsf('./images/hee.jpg',52, 47, 345, 330,200,200,'./images/hee10.jpg');Nach dem Login kopieren
Drei, Textwasserzeichen zum Bild hinzufügen: Textwasserzeichen und Bildwasserzeichencode
Textwasserzeichen zum Bild hinzufügenfunction mark_text($backgroung,$x,$y,$text,$fileNames){ list(,,$imagetype)=getimagesize($backgroung); if($imagetype == 1){ $s_img=imagecreatefromgif($backgroung); }elseif($imagetype == 2){ $s_img=imagecreatefromjpeg($backgroung); }elseif($imagetype == 3){ $s_img=imagecreatefrompng($backgroung); } $green=imagecolorallocate($s_img,0,255,0); imagettftext($s_img,20,0,$x,$y,$green,'./font/msyh.ttf',$text); if(imagetypes() & IMG_GIF){ header("Content-Type:image/gif"); imagegif($s_img,$fileNames); }elseif(imagetypes() & IMG_JPG){ header("Content-Type:image/jpeg"); imagejpeg($s_img,$fileNames); }elseif(imagetypes() & IMG_PNG){ header("Content-Type:image/png"); imagepng($s_img,$fileNames); } imagedestroy($s_img); } $text=iconv('gb2312','utf-8','细说PHP'); //mark_text('./images/hee.jpg',150,250,$text,'./images/hee5.jpg');Nach dem Login kopieren
Bildwasserzeichen zu Bildern hinzufügen
function mark_pic($backgroung,$x,$y,$waterpic,$fileNames){ $s_img=imagecreatefromjpeg($backgroung); $waterpic_img=imagecreatefromgif($waterpic); $waterpic_w=imagesx($waterpic_img); $waterpic_h=imagesy($waterpic_img); imagecopy( $s_img, $waterpic_img, $x,$y, 0,0, $waterpic_w,$waterpic_h); header("Content-Type:image/jpeg"); imagejpeg($s_img,$fileNames); imagedestroy($s_img); imagedestroy($waterpic_img); } //mark_pic('./images/hee.jpg',50,200,'./images/gaolf.gif','./images/hee6.jpg');Nach dem Login kopieren
4. Bildrotationscode
Bildrotationsressource imagerotate( ) – Drehen Sie das Bild um einen bestimmten Winkel und geben Sie neue Ressourcen zurück
5. Drehen Sie das Bild um
Drehen Sie das Bild entlang der Y-Achse, also nach links und rechts
function imagexz($backgroung,$angle,$location){ $s_img=imagecreatefromjpeg($backgroung); $n_img=imagerotate($s_img,$angle,0); header("Content-Type:image/jpeg"); imagejpeg($n_img,$location); imagedestroy($s_img); imagedestroy($n_img); } imagexz('./images/hee.jpg',360,'images/hee10.jpg'); //90 180 270 360
Das Bild entlang der x-Achse zu spiegeln bedeutet, es nach oben und unten zu vertauschen
function turn_y($backgroung,$newFiles){ $s_img=imagecreatefromjpeg($backgroung); $width=imagesx($s_img); $height=imagesy($s_img); $n_img=imagecreatetruecolor($width,$height); for( $x=0; $x<$width; $x++ ){ imagecopy($n_img,$s_img, $width-$x-1,0, $x,0, 1,$height); } header("Content-Type:image/jpeg"); imagejpeg($n_img,$newFiles); imagedestroy($s_img); imagedestroy($n_img); } //turn_y('./images/hee.jpg','./images/hee11.jpg');
6. Bildschärfung
function turn_x($backgroung,$newFiles){ $s_img=imagecreatefromjpeg($backgroung); $width=imagesx($s_img); $height=imagesy($s_img); $n_img=imagecreatetruecolor($width,$height); for( $y=0; $y<$height; $y++ ){ imagecopy($n_img,$s_img, 0,$height-$y-1, 0,$y, $width,1); } header("Content-Type:image/jpeg"); imagejpeg($n_img,$newFiles); imagedestroy($s_img); imagedestroy($n_img); } //turn_x('./images/hee.jpg','./images/hee12.jpg');Nach dem Login kopieren
Bildschärfung (analytisches Prinzip) (erhalten Sie zuerst die Farbe des Originalbilds und schärfen Sie dann die Farbe des Originalbildes und weisen Sie schließlich die geschärfte Farbe dem Originalbild zu)
根据解决在写一遍图片锐化代码 相关推荐: Das obige ist der detaillierte Inhalt vonSo implementieren Sie PHP-Code zur Verarbeitung von Bildern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!#解析开始:
#1 创建要锐化的图片资源
#eg:$s_img=imagecreatefromjpeg('./images/hee.jpg');
#2 获取图片资源的宽、高,创建两层循环(外层控制宽 内层控制高) 对每一个像素进行锐化
#eg:$width=imagesx($s_img);
# $height=imagesy($s_img);
# for($i=$width-1; $i>0; $i--){
# for($j=$height-1; $j>0; $j--){
#
# }
# }
#3 在内层循环里对每一个像素颜色进行锐化(写在内层循环):
#3.1 用函数$color=imagecolorsforindex()取得图片索引的颜色,即取得当前颜色和取得上一个颜色
#eg: $s_img_color1=imagecolorsforindex($s_img , imagecolorat($s_img , $i-1, $j-1));//上一个颜色
# $s_img_color2=imagecolorsforindex($s_img , imagecolorat($s_img , $i, $j));//当前颜色
#3.2 固定算法对取得的颜色进行锐化 比如锐化20:$degree=20
#eg:$r=intval($color["red"]+$degree*($color["red"]-$color["red"]));
# $g=intval($s_img_color2["green"]+$degree*($s_img_color2["green"]-$s_img_color1["green"]));
# $b=intval($s_img_color2["blue"]+$degree*($s_img_color2["blue"]-$s_img_color1["blue"]));
#3.3 把取得的RGB颜色控制在0~255正常范围内
#$r=min(255, max($r, 0));
#$g=min(255, max($g, 0));
#$b=min(255, max($b, 0));
#4 把锐化后的每一个像素颜色重新赋给原图的每一个像素颜色(写在内层循环)
#4.1 取得锐化后颜色的索引:$rh_color
#eg:if( ($rh_color=imagecolorexact($s_img,$r,$g,$b)) ==-1){
# $rh_color=imagecolorallocate($s_img,$r,$g,$b);
# }
#4.2 把锐化后的每一个像素颜色重新赋给原图的每一个像素颜色
eg:imagesetpixel($s_img, $i, $j, $rh_color);
#5 保存图片资源(写在循环外)
#eg:imagejpeg($s_img'./images/hee16.jpg');
#6 关闭图片资源(写在循环外)
#eg:imagedestroy($s_img);
#解析结束 function sharp($background, $degree, $location){
#step 1 创建图片资源
$s_img=imagecreatefromjpeg($background);
#step 2 获取图片资源的宽高
$b_x=imagesx($s_img);
$b_y=imagesy($s_img);
#step 3 两层循环进行锐化 外层控制宽 内层控制高
for( $i=$b_x-1; $i>0; $i-- ){
for( $j=$b_y-1; $j>0; $j-- ){
#step 4 取得图片索引的颜色:当前颜色和上一个颜色
$s_img_color1=imagecolorsforindex($s_img, imagecolorat($s_img, $i-1, $j-1));
$s_img_color2=imagecolorsforindex($s_img, imagecolorat($s_img, $i, $j));
#step 5 固定算法对取得的颜色进行锐化
$r=intval($s_img_color2["red"]+$degree*($s_img_color2["red"]-$s_img_color1["red"]));
$g=intval($s_img_color2["green"]+$degree*($s_img_color2["green"]-$s_img_color1["green"]));
$b=intval($s_img_color2["blue"]+$degree*($s_img_color2["blue"]-$s_img_color1["blue"]));
#step 6 把取得的RGB颜色控制在0~255正常范围内
$r=min(255, max($r, 0));
$g=min(255, max($g, 0));
$b=min(255, max($b, 0));
#step 7 取得锐化后颜色的索引
if( ($d_clr=imagecolorexact($s_img,$r,$g,$b)) ==-1){
$d_clr=imagecolorallocate($s_img,$r,$g,$b);
}
#step 8 把锐化后的颜色重新赋给图片资源的每一个像素
imagesetpixel($s_img, $i, $j, $d_clr);
}
}
imagejpeg($s_img,$location);
imagedestroy($s_img);
}
sharp('./images/hee.jpg',50,'./images/hee16.jpg');