最近在研究PHP,因爲項目中需要使用到縮略圖,縮略圖如果不裁剪的話,你會發現圖像變得奇形怪狀,不利於排版。因此這裏就簡單介紹一下生成居中縮略圖的想法:
一張圖片480*800
現在我要裁剪成一張240*240的圖片
類似於上面的這張。
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端的位置