使用Wand保存单帧

时间:2017-01-06 16:55:42

标签: python pdf wand

我的小脚本出了问题。我想使用wandconvert PDF file on jpeg file,我想保留一个特定的框架。

我的脚本有两件事:

  • 如果PDF文档生成一个页面:将其转换并保存到jpeg文件中(可以正常工作)

  • 如果PDF文档有两页或更多页面:转换和只保存第一页到jpeg文件中(它不起作用)

我的问题是:我想保存我的意思page[0],但我找不到保存单帧的方法。

#-*- coding: utf-8 -*-

from wand.image import Image
import os

documents_path = "/Users/tiers/Desktop/documents/"

for PDF in os.listdir (documents_path) : #boucle sur tous les PDF du dossier

    convert = Image(filename=documents_path + PDF, resolution=200)  
    name = PDF.split('.') #Récupération du nom

    if len(convert.sequence) == 1 :  #Nombre de page = 1
            convert.compression_quality = 100 #Qualité en %
            convert.save(filename="/Users/tiers/Desktop/documents_jpg/" + name[0] + ".jpg") #Enregistrement en JPEG sous la forme nom.jpg

    elif len(convert.sequence) > 1 : #Nombre de page > 1

            for page in convert.sequence : #Pour chaque page 
                convert.compression_quality = 100 #Qualité en %
                page.save(filename="/Users/tiers/Desktop/documents_jpg/" + name[0] + ".jpg") #Enregistrement en JPEG sous la forme nom.jpg

你有什么想法吗?

编辑:

我编辑了我的剧本。我在break的第一个循环之后for。从这个方面来说,我只是拿起第一页,但我不喜欢这样的事情......

#-*- coding: utf-8 -*-

from wand.image import Image
import os
import matplotlib as plt

documents_path = "/Users/tiers/Desktop/documents/"

for PDF in os.listdir (documents_path) : #boucle sur tous les PDF du dossier

    convert = Image(filename=documents_path + PDF, resolution=200)  
    name = PDF.split('.') #Récupération du nom
    page = len(convert.sequence)

    if page == 1 :  #Nombre de page = 1
            convert.compression_quality = 100 #Qualité en %
            convert.save(filename="/Users/tiers/Desktop/documents_jpg/" + name[0] + ".jpg") #Enregistrement en JPEG sous la forme nom.jpg

    elif page > 1 : #Nombre de page > 1

        for frame in convert.sequence : #Pour chaque page 
                img_page = Image(image=frame)
                img_page.compression_quality = 100 #Qualité en %
                img_page.save(filename="/Users/tiers/Desktop/documents_jpg/" + name[0] + ".jpg") #Enregistrement en JPEG sous la forme nom.jpg
                break

它有效,但是如果你有其他方法可以做到这一点,我会接受!

2 个答案:

答案 0 :(得分:6)

from wand.image import Image

with Image(filename='yourfilename.pdf') as img:
    extractedimg = img.sequence[0]
    first_image = Image(image=extractedimg)
    first_image.format= 'jpeg'
    first_image.save(filename='001.jpg')

我认为这样更好。

答案 1 :(得分:0)

更正我的回答只是为了包含第一页

from wand.image import Image
import os
import matplotlib as plt

documents_path = "/Users/tiers/Desktop/documents/"

for PDF in os.listdir (documents_path) : #boucle sur tous les PDF du dossier

    convert = Image(filename=documents_path + PDF, resolution=200)  
    name = PDF.split('.') #Récupération du nom

    page=convert.sequence[0]
    convert.compression_quality = 100 #Qualité en %
    page.save(filename="/Users/tiers/Desktop/documents_jpg/" + name[0] +  ".jpg") #Enregistrement en JPEG sous