2017-01-09 2 views
0

ImageMagick 및 완드와 함께 PDF file as JPEG file (정확하게는 첫 번째 페이지 만)을 저장하고 싶습니다.완드가 포함 된 출력 파일 없음

그러나 파일을 저장할 때 파일 형식이 인쇄되고 NoneType이 표시됩니다. 내가 각 와 함께 각 JPEG 이미지를 사용해야하기 때문에 uint8을 얻어야합니다.

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

from wand.image import Image 
import os, shutil, glob 


for PDF in os.listdir ("/Users/valentinjungbluth/Desktop/NAPS_PDF/") : #boucle sur tous les PDF du dossier 

     if PDF.endswith('.pdf'): 

       with Image(filename="/Users/valentinjungbluth/Desktop/NAPS_PDF/" + PDF, resolution=200) as convert : 
         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 % 
           saved = convert.save(filename="/Users/valentinjungbluth/Desktop/PDF_to_JPG/" + name[0] + ".jpg") #Enregistrement en JPEG sous la forme nom.jpg 
           print type(saved) 


         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/valentinjungbluth/Desktop/PDF_to_JPG/" + name[0] + ".jpg") #Enregistrement en JPEG sous la forme nom.jpg 
             break 

제대로 저장하는 방법을 찾지 못했지만 NoneType이 아닙니다.

그렇게 하시겠습니까?

편집 : make_blob과 대답에서 업데이트됩니다

스크립트 :

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

import os 
from wand.image import Image 


for PDF in os.listdir("/Users/valentinjungbluth/Desktop/NAPS_PDF/"): #boucle sur tous les PDF 

    if PDF.endswith('.pdf'): 

     with Image(filename="/Users/valentinjungbluth/Desktop/NAPS_PDF/" + PDF, resolution=200) as convert : 
      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 % 
       blob = convert.make_blob("JPEG") 
       #saved = convert.save(filename="/Users/valentinjungbluth/Desktop/PDF_to_JPG/" + name[0] + ".jpg") #Enregistrement en JPEG sous la forme nom.jpg 
       print type(saved) 


      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 % 
        blob = img_page.make_blob("JPEG") 
        #convert.save(filename="/Users/valentinjungbluth/Desktop/PDF_to_JPG/" + name[0] + ".jpg") #Enregistrement en JPEG sous la forme nom.jpg 
        print type(blob) 
        break 

답변

0

나는 지팡이의 wand.image.Image.save 반환하지 않습니다 데이터를 믿는다. 이에 대한 방법은 wand.image.Image.make_blob입니다.

with Image(filename="...") as img: 
    blob = img.make_blob("JPG") 

위 OpenCV의의 cv2.imdecode의 JPEG 데이터를 반환합니다. 파일로 BLOB 데이터를 저장하지 않으며, 더 이상 wand.Image 인스턴스가 필요한 경우

byte_vector = numpy.fromstring(blob, numpy.uint8) 
mat = cv2.imdecode(byte_vector, cv2.CV_LOAD_IMAGE_COLOR) 

는, 다음은 간단합니다.

with open('myFile.jpg', 'w') as fd: 
    fd.write(blob) 
+0

@emcconvile 질문에 맞게 스크립트를 편집했지만 Blob 바이너리 문자열로 jpeg를 어떻게 저장할 수 있습니까? 왜냐하면'blob.save'를 작성하면 오류가 발생합니다 :'AttributeError : 'str'객체에 'save '' 속성이 없습니다. – Deadpool

+0

'blob' 변수는 바이너리 문자열이됩니다. – emcconville

+0

그리고 OpenCV를 사용하여 어떻게 저장하고 해독 할 수 있습니까? – Deadpool