1. 程式人生 > >ThinkPHP中圖片按比例切割

ThinkPHP中圖片按比例切割

在開發中,經常會遇到圖片需要按照一定比例進行縮放的情況,但是,如果一張長寬比為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;
}