2016-10-09 15 views
5

Các hướng dẫn là đủ đơn giản trong Wand docs cho đọc một hình ảnh trình tự (ví dụ như hoạt hình gif, file icon, vv):Làm cách nào để tạo một gif động trong Python bằng cách sử dụng Wand?

>>> from wand.image import Image 
>>> with Image(filename='sequence-animation.gif') as image: 
...  len(image.sequence) 

... nhưng tôi không chắc chắn làm thế nào để tạo một.

Trong Ruby, điều này rất dễ sử dụng RMagick, vì bạn có ImageList s. (Xem my gist cho một ví dụ.)

tôi đã cố gắng tạo ra một Image (như là "container") và instantiating mỗi SingleImage với một đường dẫn hình ảnh, nhưng tôi khá chắc chắn rằng đó là sai lầm, đặc biệt là kể từ khi tài liệu hướng dẫn xây dựng cho SingleImage doesn không tìm kiếm sử dụng bởi người dùng cuối.

Tôi cũng đã thử tạo một số wand.sequence.Sequence và đi từ góc đó, nhưng cũng nhấn vào điểm chết. Tôi cảm thấy rất lạc lõng.

+0

câu hỏi của tôi có vẻ là một người bị mắc mưu của http://stackoverflow.com/questions/17394869/writing-animated-gif-using-wand-and-imagemagick?rq=1 – Dominick

+0

cho những người tò mò, đây là những gì tôi đã kết thúc với (nó hoạt động như tôi muốn nó), nhờ câu trả lời được chấp nhận của @ emcconville bên dưới: https://gist.github.com/dguzzo/cecc2ef8b8b520af3dc40e209eadc183 – Dominick

Trả lời

4

Các ví dụ tốt nhất được đặt trong các bài kiểm tra đơn vị đi kèm với mã. Ví dụ: wand/tests/sequence_test.py.

Để tạo gif động bằng cây đũa phép, hãy nhớ tải hình ảnh vào chuỗi và sau đó đặt xử lý chậm trễ/tối ưu hóa bổ sung sau khi tất cả các khung được tải.

from wand.image import Image 

with Image() as wand: 
    # Add new frames into sequance 
    with Image(filename='1.png') as one: 
     wand.sequence.append(one) 
    with Image(filename='2.png') as two: 
     wand.sequence.append(two) 
    with Image(filename='3.png') as three: 
     wand.sequence.append(three) 
    # Create progressive delay for each frame 
    for cursor in range(3): 
     with wand.sequence[cursor] as frame: 
      frame.delay = 10 * (cursor + 1) 
    # Set layer type 
    wand.type = 'optimize' 
    wand.save(filename='animated.gif') 

output animated.gif

+0

tuyệt vời, cảm ơn @emcconville; Tôi nên xem xét các bài kiểm tra đơn vị đó! – Dominick

Các vấn đề liên quan