Python 影像庫 (PIL) 的新手,但注意到生成的像素是矩形而不是正方形。查看圖片

圖1:左側紅色像素明顯關閉(從 96x96 像素影像放大)。圖2:所有像素似乎都是矩形的(從 48x48 像素影像放大)。
看起來小影像(< 20x20)似乎沒問題(也許它們是矩形的,但我沒有注意到)但是當你走高(> 30x30)時,矩形像素非常明顯。
我很想知道為什么會發生這種情況以及如何解決?有沒有辦法設定像素比率/尺寸。
我模擬圖片2的代碼如下:
import numpy as np
from PIL import Image
def random_rgb():
"""
Creates tuple of random values between 0 - 255 inclusive.
:return: tuple
"""
r, g, b = np.random.randint(0, 256), np.random.randint(0, 256), np.random.randint(0, 256)
rgb = (r, g, b)
return rgb
def rainbow_bg(n):
"""
Creates a list of lists of dimensions n x n
:return: list
"""
img = []
for i in range(n):
img.append([random_rgb() for i in range(n)])
return img
def generate_image(pixels, dim, img_name):
"""
Generates pixel image from list.
:param pixels: list
:param dim: tuple
:param img_name: string
:return:
"""
arr = np.array(pixels, dtype=np.uint8)
new_image = Image.fromarray(arr)
new_image = new_image.resize(dim, resample=0)
filename = f'{img_name}.png'
new_image.save(filename)
return
bg = rainbow_bg(48)
generate_image(pixels=bg, dim=(400, 400), img_name=f'background')
uj5u.com熱心網友回復:
我認為這是一個劃分問題,因為您的影像尺寸無法適合您要繪制的像素數。
如果您將尺寸更改為:
dim=(480, 480)
你會得到完美的正方形
我可能會為“n”和暗淡使用 2 的冪,所以你永遠不會有任何問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485058.html
上一篇:將2D陣列堆疊成3D陣列
下一篇:元組到numpy,資料準確性
