2016-11-12 5 views
1

複数のページを含むPDFを、Python 3および理想的にはWandを使用してページが下になる単一のアニメーション化されたgifに変換する必要があります。私は次のコードでこれをやろうとしましたが、gifはまだアニメーション化されているため、個々のページはアニメーションのフレームのように動作します。 (PDFファイルは、PDFの場所で、たgifFile私はアニメーションGIFを保存する場所です)Python 3 Wand複数のPDFページからアニメーション化されていないgifを作成する方法

from wand.image import Image 

with Image(filename = PDFfile) as img: 
    Pages = [] 
    for x in range(len(img.sequence)): 
     Frame = Image(image = img.sequence[x]) 
     Pages.append(Frame) 
    CombinedImage = Image() 
    HeightToPlaceAt = 0 
    for Page in Pages: 
     CombinedImage.blank(Pages[0].width,Pages[0].height * len(Pages)) 
     CombinedImage.composite(Page,0,HeightToPlaceAt) 
     HeightToPlaceAt += Page.height 
    CombinedImage.save(filename = GIFfile) 

すべてのように私はアニメーションをどのように停止することができます:ここでは

は私の現在のコードですフレームを一度に見ることができます。イメージを1つのフレームに「平坦化」する方法はありますか?

おかげ

+0

「* un * animated GIF」という言葉を初めて聞いたことがあります。ページごとに1つのイメージを必要としていないと確信していますか? – usr2564301

+0

Pythonを使う私はテキストウィジェットにPDFを含む複数の画像ファイルタイプを表示する必要があります。これを行う最も簡単な方法は、すべてを.gif、.ppm、または.pgmに変換することだと思いました。私は他のファイルタイプを.gifに変えることができましたが、複数のpdfファイルはアニメーション化されてしまいますので、私は見ることができる限りすべてのページを1つのフレームに入れる必要があります。 – ECPeasy

答えて

0

時にはそれはあなたがそれについて知っていない機能が存在しなければならないことは、あなたの問題を解決することを想定する前に、ちょうどあなたのforループを通読するのに役立ちます。私はこれを難しい方法で見つけたように見えます。私の修正コード:

with Image(filename = PDFfile) as img: 
    Pages = [] 
    for x in range(len(img.sequence)): 
     Frame = Image(image = img.sequence[x]) 
     Pages.append(Frame) 
    CombinedImage = Image() 
    CombinedImage.blank(Pages[0].width,Pages[0].height * len(Pages)) 
    HeightToPlaceAt = 0 
    for Page in Pages: 
     CombinedImage.composite(Page,0,HeightToPlaceAt) 
     HeightToPlaceAt += Page.height 
    CombinedImage.save(filename = GIFfile) 
関連する問題