Python枕头从像素制作gif

问题描述 投票:1回答:1

enter image description here

我有图像和蓝色像素列表。我想遍历蓝色像素,将它们更改为红色,并由此生成gif。因此,它一定是一条线,因此颜色从蓝色变为红色,但是出了问题

im = Image.open(r"test2.png")
pixels = im.load()
images = []
blues = get_sorted_blues()  # See func below

for x, y in blues:
     ...:     pixels[x, y] = (255, 0, 0)
     ...:     images.append(im)

images[0].save('result.gif',
     ...:                save_all=True,
     ...:                append_images=images[1:],
     ...:                duration=100,
     ...:                loop=0)

def get_sorted_blues():
    ...:     blues = []
    ...:     for x in range(im.width):
    ...:         for y in range(im.height):
    ...:             if pixels[x, y] == (0, 0, 255):
    ...:                 blues.append([x, y])
    ...:     return sorted(blues)

result.gif它只是一条红线,没有任何动画

python python-imaging-library gif
1个回答
0
投票

有很多方法可以使蓝色像素变成红色-并且在性能,可读性,可维护性方面,使用for循环在列表的后面。

这里是使用“ Colour Matrix”交换红色和蓝色通道的一个:

from PIL import Image

# Open image
im = Image.open('lines.png')

# Define color matrix to swap the red and blue channels
Matrix = ( 0, 0, 1, 0, 
           0, 1, 0, 0, 
           1, 0, 0, 0)    

# Apply matrix
res = im.convert("RGB", Matrix)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.