圖片生成居中縮略圖的算法

最近在研究PHP,因爲項目中需要使用到縮略圖,縮略圖如果不裁剪的話,你會發現圖像變得奇形怪狀,不利於排版。因此這裏就簡單介紹一下生成居中縮略圖的想法:

一張圖片480*800

wKioL1WQwCaQGkPPAAKRfEgF3mc371.jpg

現在我要裁剪成一張240*240的圖片

wKioL1WQwGShBReHAACWxp1cPRw993.jpg

類似於上面的這張。


1.首先我們需要計算縮放的時候是寬度優先還是高度優先,如果是像上面這樣的就是寬度優先。

則縮放比例就是

ratio = image_width_dst/image_width_src


2.根據比例,縮小後的高度就是

image_height_pre = image_height_src *  ratio


3.獲取了縮放後高的高度,再減去需要生成的高度,就是縮小後剩餘的高度

image_height_rem = image_hieght_pre - image_height_dst


4.最後計算開始裁剪的地方

start_cut = image_height_rem  *  image_width_src/image_widtg_dst / 2


就上面的公式不好理解:


總結:

寬度優先的公式

開始裁剪的座標 = (原圖高  *  (目標圖寬/原圖寬) -目標圖高) * (原圖寬/目標圖寬 ) / 2


高度優先的公式

開始裁剪的座標 = (原圖寬  *  (目標圖高/原圖高) -目標圖寬) * (原圖高/目標圖高 ) / 2




難點:

當獲取到裁剪剩餘的高度的時候,還需要還原爲原來圖片的比例。

除以2,是爲了居中,空出2端的位置







 

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