這篇文章主要講解了“python圖像等比縮放怎么實(shí)現(xiàn)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“python圖像等比縮放怎么實(shí)現(xiàn)”吧!
成都創(chuàng)新互聯(lián)主要從事做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)云城,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
說明
1、初始化目標(biāo)尺寸的幕布,所有值都是一樣的。
2、計(jì)算出放縮比例。
把原圖中較長的邊放縮到目標(biāo)尺寸大小.
3、使短邊也能按此比例放縮,得到的圖片就不會(huì)變形。
4、縮放后的圖像必須小于等于目標(biāo)尺寸。
因此必須能夠粘貼在幕布的中心,這樣幕布中沒有被覆蓋的地方就會(huì)自動(dòng)變成留白,省去了填充步驟。
5、得到想要的圖片。
實(shí)例
import numpy as np from PIL import Image def resize(img, size): # 先創(chuàng)建一個(gè)目標(biāo)大小的幕布,然后將放縮好的圖片貼到中央,這樣就省去了兩邊填充留白的麻煩。 canvas = Image.new("RGB", size=size, color="#7777") target_width, target_height = size width, height = img.size offset_x = 0 offset_y = 0 if height > width: # 高 是 長邊 height_ = target_height # 直接將高調(diào)整為目標(biāo)尺寸 scale = height_ / height # 計(jì)算高具體調(diào)整了多少,得出一個(gè)放縮比例 width_ = int(width * scale) # 寬以相同的比例放縮 offset_x = (target_width - width_) // 2 # 計(jì)算x方向單側(cè)留白的距離 else: # 同上 width_ = target_width scale = width_ / width height_ = int(height * scale) offset_y = (target_height - height_) // 2 img = img.resize((width_, height_), Image.BILINEAR) # 將高和寬放縮 canvas.paste(img, box=(offset_x, offset_y)) # 將放縮后的圖片粘貼到幕布上 # box參數(shù)用來確定要粘貼的圖片左上角的位置。offset_x是x軸單側(cè)留白,offset_y是y軸單側(cè)留白,這樣就能保證能將圖片填充在幕布的中央 return canvas img= Image.open('1.jpg') target__size=(500,300) # 目標(biāo)尺寸:寬為500,高為300 res = resize(img,target__size) res.save('new.jpg')
感謝各位的閱讀,以上就是“python圖像等比縮放怎么實(shí)現(xiàn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對python圖像等比縮放怎么實(shí)現(xiàn)這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!