新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:python如何實(shí)現(xiàn)圖像等比縮放
說明

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比黃龍網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式黃龍網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋黃龍地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
1、初始化目標(biāo)尺寸的幕布,所有值都是一樣的。
2、計(jì)算出放縮比例。
把原圖中較長的邊放縮到目標(biāo)尺寸大小.
3、使短邊也能按此比例放縮,得到的圖片就不會變形。
4、縮放后的圖像必須小于等于目標(biāo)尺寸。
因此必須能夠粘貼在幕布的中心,這樣幕布中沒有被覆蓋的地方就會自動變成留白,省去了填充步驟。
5、得到想要的圖片。
實(shí)例
import numpy as np
from PIL import Image
def resize(img, size):
# 先創(chuàng)建一個目標(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)整了多少,得出一個放縮比例
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)圖像等比縮放的方法,希望對大家有所幫助。更多Python學(xué)習(xí)指路:創(chuàng)新互聯(lián)python教程
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。
新聞名稱:創(chuàng)新互聯(lián)Python教程:python如何實(shí)現(xiàn)圖像等比縮放
標(biāo)題來源:http://www.dlmjj.cn/article/cocoegj.html


咨詢
建站咨詢
