我目前正在做一个小项目,我试图用一个固定的调色板生成一个固定大小的随机图像。一切都很好,但放大图像显示像素插值的方式看起来不太好。我更喜欢像素有硬边,就像最近邻插值一样。我该怎么做呢?见下面的代码:
#!/usr/bin/env
import random
from PIL import Image
colors = ["#ffffff", "#898d90", "#000000", "#cf0530", "#2450a4", "#7eed56", "#ffd635", "#6134e1",
"#ffa800", "#6d482f", "#ff3881", "#51e9f4", "#fff8b8", "#94b3ff", "#158d62", "#515252" ]
def main():
size = width, height = 128, 128
image = Image.new( "RGB", size)
fillRand(image, size)
image.show()
del image
def randColor():
color = random.choice(colors)
return color
def hex_to_rgb(hex):
return tuple(int(hex.lstrip('#')[i:i+2], 16) for i in (0, 2, 4))
def fillRand(image, size):
for x in range(size[0]):
for y in range(size[1]):
pixel_access_object = image.load()
pixel_access_object[x,y] = (hex_to_rgb(randColor()))
if ( __name__ == "__main__"):
main()
先谢谢你!
P.S. -Python不是我的主要语言,我一般都很生疏,所以如果我的代码很古怪,我很抱歉。
1条答案
按热度按时间anauzrmj1#
我想这是你的图像浏览器的问题。我用的是ImageGlass,它的像素有清晰的边缘。一个可能的解决方案是让像素更大,这样你就可以给16x16个像素涂上同样的颜色,而不是一种颜色。这样插值就看不出来了。