溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python圖像等比縮放怎么實(shí)現(xiàn)

發(fā)布時(shí)間:2022-05-23 16:58:13 來(lái)源:億速云 閱讀:360 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“python圖像等比縮放怎么實(shí)現(xiàn)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“python圖像等比縮放怎么實(shí)現(xiàn)”吧!

說(shuō)明

1、初始化目標(biāo)尺寸的幕布,所有值都是一樣的。

2、計(jì)算出放縮比例。

把原圖中較長(zhǎng)的邊放縮到目標(biāo)尺寸大小.

3、使短邊也能按此比例放縮,得到的圖片就不會(huì)變形。

4、縮放后的圖像必須小于等于目標(biāo)尺寸。

因此必須能夠粘貼在幕布的中心,這樣幕布中沒(méi)有被覆蓋的地方就會(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:              # 高 是 長(zhǎng)邊
        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ù)用來(lái)確定要粘貼的圖片左上角的位置。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)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)python圖像等比縮放怎么實(shí)現(xiàn)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI