Я хочу изменить продолжительность анимированного GIF.
Используя Python Pil, я извлекаю кадры, а затем создаю новый GIF с другой продолжительностью.
from PIL import Image, ImageDraw
import os
def extractFrames(inGif):
frame = Image.open(inGif)
frames = []
nframes = 0
while frame:
frames.append(frame)
nframes += 1
try:
frame.seek( nframes )
except EOFError:
break;
return frames, nframes
frames, nframes = extractFrames('1.gif')
interval = 100
# In documentation says duration is interval time, but it is total time.
total_duration = nframes*interval
# Save into a GIF file that loops forever
frames[0].save('1_1.gif', format='GIF', append_images=frames[1:], save_all=True, duration=total_duration, loop=0)
Однако размер файла примерно в 10 раз превышает исходное изображение.
Я не понимаю, почему это происходит и можно ли это предотвратить?
Я также пыталсяиспользование Exiftool только для изменения метаданных, но у меня это тоже не работает:
exiftool -overwrite_original -XMP-xmpDM:Duration={Scale="s",Value=14} 1.gif
Warning: Improperly formed structure for XMP-xmpDM:Duration
Warning: Improperly formed structure for XMP-xmpDM:Duration
Nothing to do.