php進行圖片裁剪及生成縮略圖程序源代碼

我們經常會遇到對圖像進行裁剪動作,下面這段代碼就是裁剪的源碼

處理方法是:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章