我們經常會遇到對圖像進行裁剪動作,下面這段代碼就是裁剪的源碼
處理方法是:
1.當原圖的寬或高任一比規定的尺寸小,只進行等比縮略處理,
2.當原圖的寬與高都比規定尺寸大,先進行等比縮略處理,然後算出居中位置進行裁剪
<?php /* * $o_photo 原圖路徑 * $d_photo 處理後圖片路徑 * $width 定義寬 * $height 定義高 * 調用方法 cutphoto("test.jpg","temp.jpg",256,146); */ functioncutphoto($o_photo, $d_photo, $width, $height) { $temp_img= imagecreatefromjpeg($o_photo); $o_width= imagesx($temp_img); //取得原圖寬 $o_height= imagesy($temp_img); //取得原圖高 //判斷處理方法 if($width> $o_width|| $height> $o_height) { //原圖寬或高比規定的尺寸小,進行壓縮 $newwidth= $o_width; $newheight= $o_height; if($o_width> $width) { $newwidth= $width; $newheight= $o_height* $width/ $o_width; } if($newheight> $height) { $newwidth= $newwidth* $height/ $newheight; $newheight= $height; } //縮略圖片 $new_img= imagecreatetruecolor($newwidth, $newheight); imagecopyresampled($new_img, $temp_img, 0, 0, 0, 0, $newwidth, $newheight, $o_width, $o_height); imagejpeg($new_img, $d_photo); imagedestroy($new_img); } else{ //原圖寬與高都比規定尺寸大,進行壓縮後裁剪 if($o_height* $width/ $o_width> $height) { //先確定width與規定相同,如果height比規定大,則ok $newwidth= $width; $newheight= $o_height* $width/ $o_width; $x= 0; $y= ($newheight- $height) / 2; } else{ //否則確定height與規定相同,width自適應 $newwidth= $o_width* $height/ $o_height; $newheight= $height; $x= ($newwidth- $width) / 2; $y= 0; } //縮略圖片 $new_img= imagecreatetruecolor($newwidth, $newheight); imagecopyresampled($new_img, $temp_img, 0, 0, 0, 0, $newwidth, $newheight, $o_width, $o_height); imagejpeg($new_img, $d_photo); imagedestroy($new_img); $temp_img= imagecreatefromjpeg($d_photo); $o_width= imagesx($temp_img); //取得縮略圖寬 $o_height= imagesy($temp_img); //取得縮略圖高 //裁剪圖片 $new_imgx= imagecreatetruecolor($width, $height); imagecopyresampled($new_imgx, $temp_img, 0, 0, $x, $y, $width, $height, $width, $height); imagejpeg($new_imgx, $d_photo); imagedestroy($new_imgx); } } cutphoto("http://tp3.sinaimg.cn/1700691210/180/1280120708/1", "temp1.jpg", 100, 100); ?>
內容出處 : http://www.17php.org/article-11.html