枕头使图像比以前更大
the pillow make the image being more size than before
我用python pillow 做了一个简单的gif图片反转,但是我发现图片的大小(10m)比之前的(1m)大了。有人知道怎么做吗?
这是我的代码:
from PIL import Image, ImageSequence
from PIL import ImagePalette
with Image.open('sd.gif') as im:
if im.is_animated:
frames = [f.copy() for f in ImageSequence.Iterator(im)]
frames.reverse()
frames[0].save('out.gif', save_all=True, append_images = frames[1:])
如果不检查实际图像,我无法确定,但我可以猜出可能发生了什么:
一些 gif 使用一种方法进行了优化,即在每一帧中找到帧与帧之间没有任何变化(或变化非常小)的像素,并使它们透明而不是存储每个像素的颜色,以减少数据量。对于一些在许多连续帧中具有较大静态区域的 gif,这可能是减小文件大小的非常有效的方法。
反转GIF时,必须先不优化帧,否则会出现没有任何数据的透明区域。这会大大增加文件大小。差异可能因一张图片而异。
创建新图像后,您可能可以通过 运行 一些 gif 优化算法来解决这个问题。
可能我找到了答案。 pillow image size issue
我用python pillow 做了一个简单的gif图片反转,但是我发现图片的大小(10m)比之前的(1m)大了。有人知道怎么做吗? 这是我的代码:
from PIL import Image, ImageSequence
from PIL import ImagePalette
with Image.open('sd.gif') as im:
if im.is_animated:
frames = [f.copy() for f in ImageSequence.Iterator(im)]
frames.reverse()
frames[0].save('out.gif', save_all=True, append_images = frames[1:])
如果不检查实际图像,我无法确定,但我可以猜出可能发生了什么:
一些 gif 使用一种方法进行了优化,即在每一帧中找到帧与帧之间没有任何变化(或变化非常小)的像素,并使它们透明而不是存储每个像素的颜色,以减少数据量。对于一些在许多连续帧中具有较大静态区域的 gif,这可能是减小文件大小的非常有效的方法。
反转GIF时,必须先不优化帧,否则会出现没有任何数据的透明区域。这会大大增加文件大小。差异可能因一张图片而异。
创建新图像后,您可能可以通过 运行 一些 gif 优化算法来解决这个问题。
可能我找到了答案。 pillow image size issue