在開發中,經常會遇到圖片需要按照一定比例進行縮放的情況,但是,如果一張長寬比為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;}
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。
新聞熱點
疑難解答
圖片精選