为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Helenr 2022-11-29 14:46:30
我尝试使用枕头对图像进行像素化,我可以获得平均 r 、 b 和 g 值,并且能够将图像设置为平均颜色或将其像素化 1x1,我将如何通过更多像素对其进行像素化,我无法找到有效的代码空间,我知道它与将图像分成网格有关from PIL import Imagesize = (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()
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

我认为最简单的方法是使用PIL.Image.resize函数:

from PIL import Image

im = Image.open('./dumpster/Mario_org.jpg')


org_size = im.size

pixelate_lvl = 8


# scale it down

im = im.resize(

    size=(org_size[0] // pixelate_lvl, org_size[1] // pixelate_lvl),

    resample=0)

# and scale it up to get pixelate effect

im = im.resize(org_size, resample=0)

前:
在此处输入图像描述

后:
在此处输入图像描述


查看完整回答
反对 回复 2022-11-29
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

这是一个如何使用 Pillow 进行像素化的示例。


from PIL import Image,ImageStat


size = (200, 200)

actual = Image.open('/path/to/your/image.png')


og = actual.resize(size)


output = Image.new('RGB',(200,200))


tile_width = 5

for 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()

请注意,还有其他方法可以选择每个图块的颜色。


查看完整回答
反对 回复 2022-11-29
  • 2 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信