从 tiff 图像创建 gif 并使用 PIL 保留分辨率

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

我想将 tiff RGB 图像导出为 gif。以下代码有效,但图像质量非常差(引入了很多噪音)。

import numpy as np
from PIL import Image

list_files = ["foo.tif", "bar.tif"]

# Create the frames
frames = []
for i in list_files:
    tif = tifffile.TiffFile(i)
    tif = tif.asarray()
    tif = tif * 255  # Tiffs are actually floats, need to be converted to ints.
    tif = tif[::3, ::3, :]  # Downscale size
    tif = tif.astype(np.uint8)
    display(tif.shape)
    frames.append(Image.fromarray(tif))

# Save into a GIF file that loops forever
frames[0].save('png_to_gif.gif', format='GIF',
               append_images=frames[1:],
               save_all=True,
               duration=300, loop=0)

生成的 gif 颜色扭曲,可能位深度非常低。

如何以更高的质量保存 gif 而不会出现颜色失真?

由于图片是浮动的 <0, 1>,它们无法在此处正确渲染以进行预览(但还可以)。

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

类似的问题之前已在这里解决:如果使用 Python Pillow 制作 gif,颜色将会消失 诀窍是在转换为 gif 之前从图像中提取调色板。在我的例子中,所有图像必须首先合并成一个图像,以便所有颜色值都将出现在随后提取的调色板中。

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