[英]How do I create and save gif of gray scale images with pillow?
运行它时出现属性错误。 此代码适用于另一个 RGB 数据集。 Python3.6、windows10
代码:
image_dirs = glob.glob(denoised_dir + "/*")
for_gif = []
counter = 0
for (count, each_dir)in enumerate(image_dirs):
images = glob.glob(each_dir + "/*")
print(images)
for image in images:
counter += 1
print(counter)
print("processing denoised image:", image)
im = Image.open(image)
print("confirmimation", type(im))
for_gif.append(im)
print("counter", counter)
print("for_gif", len(for_gif))
print(for_gif)
os.makedirs("./outputs/noise/gif/"+str(args.imgsize) + "_" + str(args.epochs) + "/" + args.image_type, exist_ok = True)
print("directory created")
for_gif[0].save("./outputs/noise/gif/"+str(args.imgsize) + "_" + str(args.epochs) + "/" + args.image_type + "/" + str(count) + ".gif",
save_all=True,
append_images=for_gif[1:],
optimize=False,
duration=500,
loop=0
)
for_gif
如下:
[<PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A07CF28>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0EC7F0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0F08D0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0F0BE0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC080>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120
at 0x1FE2A0FC0F0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC160>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC1D0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC240>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC2B0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC320>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC390>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC400>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC470>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC4E0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC550>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC5C0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC630>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC6A0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC710>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC780>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC7F0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC860>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC8D0>, <PIL.PngImagePlugin.PngImageFile image mode=L size=120x120 at 0x1FE2A0FC940>]
错误:
AttributeError: 'NoneType' object has no attribute 'palette'
任何建议都会对我有所帮助。 谢谢。
虽然Image.open(image).convert('P')
有效,但在第一次转换为灰度时我得到了更好的结果: Image.open(image).convert('L').convert('P')
在没有明确转换为灰度的情况下,GIF 会产生一些彩色噪声。
我认为发生错误是因为您将'L'
分配给了image mode
。
就我而言,它在调色板模式下运行良好: 'P'
。
import numpy as np
from PIL import Image
images=[]
for frame_id in range(frame_num):
# check image mode of target data
im_pil = Image.open("frame_id"+ ".png").convert('P')
images.append(im_pil)
images[0].save('out.gif', save_all=True, append_images=images[1:])
请注意,GIF 文件始终被读取为灰度 ('L') 或调色板模式 ('P') 图像。
参考
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.