標籤:des blog class code ext color
1.開啟已經存在的圖片
<?phpheader("Content-type:image/jpeg"); $img=imagecreatefromjpeg("cc.jpg");imagejpeg($img);imagedestroy($img);?>函數imagecreatefromjpeg()的參數即檔案所在路徑,返回值是參數所指圖片的資源標識符。該函數時通過已有映像建立一個映像,並不是單純開啟原映像本身。如果將圖片的尾碼名.jpg強制改為.png,即便是使用函數imagecreatefrompng(),也無法開啟檔案,因為圖片本質還是jpg格式的圖片。
2.擷取圖片的相關屬性
<?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";?>
另外,通過一個不屬於GD庫的函數getimagesize(),可以取得圖片的大小等相關屬性,該函數的文法如下:
array getimagesize(string $filename [, array &imageinfo])
<?php$img_info=getimagesize("cc.jpg");for($i=0;$i<4;++$i){echo $img_info[$i];echo "<br/>";}?>第三個元素是圖片的格式,它的取值含義如下所示:
1:表示該圖片是GIF格式
2:表示該圖片是JPG格式
3:表示該圖片是PNG格式
4:表示該圖片是SWF格式
5:表示該圖片是PSD格式
6:表示該圖片是BMP格式
<?php$pic_name="ee.png";$pic_size=getimagesize($pic_name);?><img src="<?php echo $pic_name; ?>"<?php echo $pic_size[3]; ?>>
3.對圖片加浮水印效果
·擷取要添加浮水印的圖片的寬、高值
·確定圖片大小是否滿足浮水印文字大小
·確定浮水印效果在圖片中的位置
·設定映像的混色模式
·產生浮水印效果
·釋放資源
<?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\">";}else{echo "uploadWrong!<br/>";}}?><html><head><title>19.9.php</title></head><body><form enctype="multipart/form-data" method="POST">選擇上傳圖片:<input name="userfile" type="file"><input type="submit" value="上傳"></form></body></html>
4.產生已有圖片的縮圖
<?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);?>第一個和第二個參數分別是靶心圖表像、原映像的標識符,接下來4個參數是目的映像和原映像的複製位置的座標,最後4個參數是目的映像和原映像的複製地區的寬高。
!!使用函數imagecopyresampled()函數
<?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);?>