Home > Article > Backend Development > PHP single row from scratch (18) image processing_PHP tutorial
1. Open an existing picture
<?php header("Content-type:image/jpeg"); $img=imagecreatefromjpeg("cc.jpg"); imagejpeg($img); imagedestroy($img); ?>The parameter of the function imagecreatefromjpeg() is the path where the file is located, and the return value is the resource identifier of the image pointed to by the parameter. This function creates a new image through an existing image, rather than simply opening the original image itself. If the image suffix name .jpg is forcibly changed to .png, even if the function imagecreatefrompng() is used, the file cannot be opened because the image is still in jpg format.
2. Get the relevant attributes of the image
<?php $img=imagecreatefromjpeg("cc.jpg"); $x=imagesx($img); $y=imagesy($img); echo "图片cc.jpg的宽为:<b>$x</b> pixels"; echo "<br/>"; echo "<br/>"; echo "图片cc.jpg的高为:<b>$y</b> pixels"; ?>
array getimagesize(string $filename [, array &imageinfo])
<?php $img_info=getimagesize("cc.jpg"); for($i=0;$i<4;++$i) { echo $img_info[$i]; echo "<br/>"; } ?>The third element is the format of the image, and its value meaning is as follows:
1: Indicates that the image is in GIF format
2: Indicates that the image is in JPG format
3: Indicates that the image is in PNG format
4: Indicates that the image is in SWF format
5: Indicates that the image is in PSD format
6: Indicates that the image is in BMP format
<?php $pic_name="ee.png"; $pic_size=getimagesize($pic_name); ?> <img src="http://blog.csdn.net/u014761013/article/details/<?php echo $pic_name; ? alt="PHP single row from scratch (18) image processing_PHP tutorial" >"<?php echo $pic_size[3]; ?>>
·Get the width and height of the image to be watermarked
·Determine whether the image size meets the watermark text size
·Determine the position of the watermark effect in the image
·Set the color blending mode of the image
·Generate watermark effect
·Release resources
<?php function makeimagewatermark($image,$pos,$water_text,$font_size,$color) { $font_type="c://WINDOWS//Fonts//SIMYOU.TTF"; if(!empty($image)&& file_exists($image)) { $img_info=getimagesize($image); $g_w=$img_info[0]; $g_h=$img_info[1]; switch($img_info[2]) { case 1: $img=imagecreatefromgif($image); break; case 2: $img=imagecreatefromjpeg($image); break; case 3: $img=imagecreatefrompng($image); break; default: die("Format Wrong"); } } else { die("Not exists!"); } $temp=imagettfbbox(ceil($font_size*2.5),0,$font_type,$water_text); $w=$temp[2]-$temp[6]; $h=$temp[3]-$temp[7]; if(($g_w<$w) || ($g_h<$h)) { echo "Too small!"; return; } switch($pos) { case 0: $pos_x=rand(0,($g_w-$w)); $pos_y=rand(0,($g_h-$h)); break; case 1: $pos_x=0; $pos_y=0; break; case 2: $pos_x=($g_w-$w)/2; $pos_y=($g_h-$h)/2; break; case 3: $pos_x=$g_w-$w; $pos_y=$g_h-$h; break; default: $pos_x=rand(0,($g_w-$w)); $pos_y=rand(0,($g_h-$h)); break; } imagealphablending($img,true);//设置图像混色模式 if(!empty($color) && (strlen($color)==7)) { $R=hexdec(substr($color,1,2)); $G=hexdec(substr($color,3,2)); $B=hexdec(substr($color,5)); } else { die("Format wrong!"); } $text_color=imagecolorallocate($img,$R,$G,$B); imagettftext($img,$font_size,0,$pos_x,$pos_y,$text_color,$font_type,$water_text); switch($img_info[2]) { case 1 : imagegif($img,$image); break; case 2 : imagejpeg($img,$image); break; case 3: imagepng($img,$image); break; default: die("Formate unSupport!"); } imagedestroy($img); } if(isset($_FILES) && !empty($_FILES['userfile'])&& $_FILES['userfile']['size']>0) {$uploadfile="./".time()."_".$_FILES['userfile']['name']; if(copy($_FILES['userfile']['tmp_name'],$uploadfile)) { makeimagewatermark($uploadfile,2,"Photo by Mac",16,"#43042A"); echo "<img src=\"".$uploadfile."\" border=\"0\" alt="PHP single row from scratch (18) image processing_PHP tutorial" >"; } else { echo "uploadWrong!<br/>"; } } ?> <html> <head> <title> 19.9.php </title> </head> <body> </body> </html>
<?php header("Content-type:image/jpeg"); $img_name="cc.jpg"; $src_img=imagecreatefromjpeg($img_name); $ow=imagesx($src_img); $oh=imagesy($src_img); $nw=round($ow*200.0/$ow); $nh=round($oh*200.0/$oh); $desc_img=imagecreate($nw,$nh); imagecopyresized($desc_img,$src_img,0,0,0,0,$nw,$nh,$ow,$oh); imagejpeg($desc_img); imagedestroy($desc_img); imagedestroy($src_img); ?>The first and second parameters are the identifiers of the target image and the original image respectively. The next 4 parameters are the coordinates of the copy positions of the target image and the original image. The last 4 parameters are the coordinates of the target image and the original image. The width and height of the copied area.
<?php header("Content-type:image/jpeg"); $img_name="cc.jpg"; $percent=0.2; $src_img=imagecreatefromjpeg($img_name); $ow=imagesx($src_img); $oh=imagesy($src_img); $nw=$ow*$percent; $nh=$oh*$percent; $desc_img=imagecreatetruecolor($nw,$nh); imagecopyresampled($desc_img,$src_img,0,0,0,0,$nw,$nh,$ow,$oh); imagejpeg($desc_img); imagedestroy($desc_img); imagedestroy($src_img); ?>