我将如何使用 PIL 对图像进行像素化?

我尝试使用枕头对图像进行像素化,我可以获得平均 r 、 b 和 g 值,并且能够将图像设置为平均颜色或将其像素化 1x1,我将如何通过更多像素对其进行像素化,我无法找到有效的代码空间,我知道它与将图像分成网格有关


from PIL import Image


size = (200, 200)

actual = Image.open('My image')

red = []

blue = []

green = []`enter code here`


og = actual.resize(size)

pop = og.load()


for y in range(40):

    for x in range(40):


        cow = pop[x, y]

        red.append(cow[0])

        blue.append(cow[1])

        green.append(cow[2])


for y in range(og.size[1]):

    for x in range(og.size[0]):

        pop[x, y] = (cow[0], cow[1], cow[2])


y = sum(red) // len(red)

z = sum(blue) // len(blue)

t = sum(green) // len(green)


og.show()


Helenr
浏览 98回答 2
2回答

杨__羊羊

我认为最简单的方法是使用PIL.Image.resize函数:from PIL import Imageim = Image.open('./dumpster/Mario_org.jpg')org_size = im.sizepixelate_lvl = 8# scale it downim = im.resize(    size=(org_size[0] // pixelate_lvl, org_size[1] // pixelate_lvl),    resample=0)# and scale it up to get pixelate effectim = im.resize(org_size, resample=0)前:后:

慕运维8079593

这是一个如何使用 Pillow 进行像素化的示例。from PIL import Image,ImageStatsize = (200, 200)actual = Image.open('/path/to/your/image.png')og = actual.resize(size)output = Image.new('RGB',(200,200))tile_width = 5for i in range(0,200,tile_width):    for j in range(0,200,tile_width):        box = (i,j,i+tile_width,j+tile_width)        region = og.crop(box)        median = ImageStat.Stat(region).median        r = Image.new('RGB',(tile_width,tile_width),tuple(median))        output.paste(r,(i,j))output.show()请注意,还有其他方法可以选择每个图块的颜色。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python