У меня есть фрагмент ниже, который создает GIF.Этот фрагмент взят из подсказок здесь .Фрагмент создает пустой кадр, и кадры имеют неравномерную задержку между ними.Обратите внимание на задержку между небытием и первым кадром, а затем быстро появляется второй кадр.Почему это происходит?
Мне пришлось создать изображение определенного размера перед рукой, потому что палочка не изменяет размер холста в соответствии с последовательностью максимального размера.Я должен найти способ разобраться и с этим.
def render(self):
# map anim gif
wand = Image2(width=205,height=223)
#create frames
for each_frame in self._tree_dot_frames:
img = Image2(blob=each_frame)
print('Image width: {} height: {}'.format(img.width,img.height))
wand.sequence.append(img)
#set frame rate
for cursor in range(len(self._tree_dot_frames)):
with wand.sequence[cursor] as frame:
print('sequence width: {} height: {}'.format(frame.width,frame.height))
frame.delay = 100
#wand.merge_layers('merge')
wand.format = 'gif'
wand.save(filename='animated.gif')
print('No of frames: {} gif width: {} height: {}'.format(len(wand.sequence),wand.width,wand.height))
self._tree_dot_blob = wand.make_blob()
return self._tree_dot_blob
Вывод:
Ширина изображения: 175 высота: 136
Ширина изображения: 205 высота: 223
ширина последовательности: 205 высота: 223
ширина последовательности: 175 высота:136
Количество кадров: 3 gif ширина: 205 высота: 223
PS : у меня есть другая проблема с похожим фрагментом здесь , не путать с этой проблемой.
Обновление 1:
Ниже приведен вывод, если я создаю объект палочки без предопределенного размера.Анимация выглядит нормально, но холст имеет первую последовательность (которая меньше), поэтому конечный gif обрезается, теперь полностью отображается вторая последовательность.
#wand = Image2(width=205,height=223)
wand = Image2()
Обновление 2:
Ниже приведен вывод, если с указанным выше изменением я также передаю последовательность в обратном порядке, так что теперь жезл принял бы 1-й размер последовательности.Теперь конечный размер GIF в порядке, но, как вы можете видеть, большая рамка всегда остается в фоновом режиме, что является новой проблемой.
#create frames
for each_frame in reversed(self._tree_dot_frames):
img = Image2(blob=each_frame)
print('Image width: {} height: {}'.format(img.width,img.height))
wand.sequence.append(img)
Пожалуйста, помогите, когда я застрялесли идти в любом из вышеперечисленных направлений.
Желаемое решение будет таким, который принимает максимальный размер поданных кадров и вмещает все кадры в этом размере / что-то, что должно быть сделано ниже (я показал только первые 2 кадра данных в проблеме выше))