溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php按比例裁剪圖片

發(fā)布時間:2020-06-23 01:55:04 來源:網(wǎng)絡(luò) 閱讀:1962 作者:李生虎lsh 欄目:web開發(fā)

/**

* 圖片裁剪函數(shù),支持方位裁剪兩種裁剪模式,李生虎3/31添加

* @param <string>  $src_file       原圖片路徑

* @param <int>     $new_width      裁剪后圖片寬度(當寬度超過原圖片寬度時,去原圖片寬度)

* @param <int>     $new_height     裁剪后圖片高度(當寬度超過原圖片寬度時,去原圖片高度)

* @param <int>     $start_x        起始位置X (當選定方位模式裁剪時,此參數(shù)不起作用)

* @param <int>     $start_y        起始位置Y(當選定方位模式裁剪時,此參數(shù)不起作用)

 * @param <int>     $times        放縮比例

* @return <string>                 裁剪圖片的文件名,出錯則返回false

*/

public function thumbimg($src_file, $target_width, $target_height,$start_x = 0, $start_y = 0,$times) {

$res['state']=0;//標志剪切是否成功 

$res['msg']='';//返回剪切信息

$start_x*=$times;

$start_y*=$times;

$new_width=$target_width*$times;

$new_height=$target_height*$times;

$pathinfo = pathinfo($src_file);

$newfilename= uniqid(). '.' . $pathinfo['extension'];//產(chǎn)生的新文件名

//$dst_file = $pathinfo['dirname'] . '/' .$newfilename;

$dst_file ='./Public/tmp/' .$newfilename;

if ($target_width < 1 || $target_height < 1) {//如果新的寬度或高度非法

$res['msg']='寬度或高度非法';

return $res;

}

if (!file_exists($src_file)) {

$res['msg']='源文件不存在';

return $res;

}

// 圖像類型

$img_type = exif_p_w_picpathtype($src_file);

$support_type = array(IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF);

if (!in_array($img_type, $support_type, true)) {

$res['msg']='只支持jpg、png、gif格式';

return $res;

}

/* 載入圖像 */

switch ($img_type) {

case IMAGETYPE_JPEG :

$src_img = p_w_picpathcreatefromjpeg($src_file);

break;

case IMAGETYPE_PNG :

$src_img = p_w_picpathcreatefrompng($src_file);

break;

case IMAGETYPE_GIF :

$src_img = p_w_picpathcreatefromgif($src_file);

break;

default:

$res['msg']='載入圖像錯誤!';

return $res;

}

/* 獲取源圖片的寬度和高度 */

$src_width = p_w_picpathsx($src_img);

$src_height = p_w_picpathsy($src_img);

/* 計算剪切圖片的寬度和高度 */

$mid_width = ($src_width < $new_width) ? $src_width : $new_width;

$mid_height = ($src_height < $new_height) ? $src_height : $new_height;

// 為剪切圖像創(chuàng)建背景畫板

$mid_img = p_w_picpathcreatetruecolor($mid_width, $mid_height);

//拷貝剪切的圖像數(shù)據(jù)到畫板,生成剪切圖像

p_w_picpathcopy($mid_img, $src_img, 0, 0, $start_x, $start_y, $mid_width, $mid_height);

// 為裁剪圖像創(chuàng)建背景畫板

$new_img = p_w_picpathcreatetruecolor($target_width, $target_height);

//拷貝剪切圖像到背景畫板,并按比例裁剪

p_w_picpathcopyresampled($new_img, $mid_img, 0, 0, 0, 0, $target_width, $target_height, $mid_width, $mid_height);

/* 按格式保存為圖片 */

switch ($img_type) {

case IMAGETYPE_JPEG :

p_w_picpathjpeg($new_img, $dst_file, 100);

break;

case IMAGETYPE_PNG :

p_w_picpathpng($new_img, $dst_file, 9);

break;

case IMAGETYPE_GIF :

p_w_picpathgif($new_img, $dst_file, 100);

break;

default:

break;

}

$res['state']=1;

$res['msg']=$dst_file;

return $res;

}


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI