ThinkPHP中圖片按比例切割
阿新 • • 發佈:2019-01-03
在開發中,經常會遇到圖片需要按照一定比例進行縮放的情況,但是,如果一張長寬比為2:1的如果需要按照1:1的比例進行展示,那麼這就意味著圖片
會發生變形。下面便介紹下載tp框架中如何按照比例切割並縮放圖片。
/**
* 切割圖片
* @param $path 所要切割的圖片的路徑
* @param $prefix 給切割後圖片的字首
* @param $width 寬度所佔比例
* @param $height 高度所佔比例
* @return string 圖片名稱
*/
function sizeThumb ($path,$prefix,$width,$height){
import("ORG.Util.Image.ThinkImage");
$image=new ThinkImage();
$image->open('.'.$path);//開啟縮圖進行編輯
$imageWidth=$image->width();//獲得圖片尺寸
$imageHeight=$image->height();
$save_name=getThumb($path, $prefix);
if (($imageHeight/$height*$width)>$imageWidth ) {//按照高切割,如果寬度沒有那麼長,就按寬度切
$image->thumb($imageWidth, ($imageWidth/$width*$height),THINKIMAGE_THUMB_CENTER)->save('.'.$save_name);
}else{
$image->thumb(($imageHeight/$height*$width), $imageHeight,THINKIMAGE_THUMB_CENTER)->save('.'.$save_name);
}
return $save_name;
}
在這裡採用的是從中間進行截圖最大比例的圖片的方式,如果需要使用其他方式的話,例如從左邊開始擷取這樣的,修改‘THINKIMAGE_THUMB_CENTER’
即可,服務端採取這樣的方式也並不是必要的,畢竟前端也可以處理,應當按照實際情況進行考慮。
當然,一般進行圖片的儲存都是儲存圖片的相對位置,如果生成了縮圖,我們其實也沒有必要再使用一個欄位儲存我們的縮圖,我們只需要重寫切割
拼接字串就行
/**
* 獲取圖片路徑
* @param $prefix 圖片的字首
* @param $img_url 原圖的路徑
* @return string 圖片路徑
*/
function getThumb($img_url,$prefix){
$str_arr=explode('/', $img_url);
$last=count($str_arr);
$str_arr[$last-1]=$prefix.$str_arr[$last-1];
$str=implode('/', $str_arr);
return $str;
}