2014-10-28 6 views
11

TLDR को सहेजने का उपयोग करना; मैं एक टीआईएफएफ लेने, इसे आकार देने की कोशिश कर रहा हूं, फिर इसे सहेज रहा हूं। हालांकि यह एक त्रुटि देता है। यह ठीक काम करता है अगर मैं सहेजी गई फ़ाइल प्रकार को पीएनजी या जेपीजी में बदलता हूं।पीआईएल संशोधित करने और फिर टीआईएफएफ रिटर्न त्रुटि

सिस्टम: विंडोज 7 पायथन 3.4 और 2.7 दोनों का उपयोग करने का प्रयास किया।

कोड:

from PIL import Image 

try:            #test file exists 
    im = Image.open(r"c:\temp\file.tif") 
except: 
    print("Error opening image") 

multiply = 5          #how much bigger 
processing = tuple([multiply*x for x in im.size]) #maths 
saved = (r"c:\temp\biggerfile.tif")    #save location 

imB = im.resize((processing))      #resizing 

imB.save(saved)         #saving 

मैं क्योंकि मैं Tesseract-ओसीआर उपयोग कर रहा हूँ, और छवि का आकार बदलने के लिए एक बेहतर उत्पादन प्राप्त करने के लिए एक TIFF आकार बदलना होगा। कार्यक्रम एक टीआईएफएफ के साथ सबसे अच्छा काम करता प्रतीत होता है।

त्रुटि मैं प्राप्त है:

_TIFFVSetField: c:\temp\biggerfile.tif: Bad value 2 for "ExtraSamples" tag. 
Traceback (most recent call last): 
    File "step1.py", line 15, in <module> 
    imB.save(saved) 
    File "C:\Python34\lib\site-packages\PIL\Image.py", line 1684, in save 
    save_handler(self, fp, filename) 
    File "C:\Python34\lib\site-packages\PIL\TiffImagePlugin.py", line 1185, in _save 
    e = Image._getencoder(im.mode, 'libtiff', a, im.encoderconfig) 
    File "C:\Python34\lib\site-packages\PIL\Image.py", line 430, in _getencoder 
    return encoder(mode, *args + extra) 
RuntimeError: Error setting from dictionary 

धन्यवाद!

+0

यह कोड मेरे लिए काम करता है। केवल एक चीज जिसे मैं सोच सकता हूं या तो आपके पास टिफ के लिए उचित एन्कोडर नहीं है या शायद यह '.tif' पर जा रहा है। क्या आपने इसे अपने फ़ाइल नामों में '.tiff' में बदलने की कोशिश की है? लिनक्स पर यह '.tif' के साथ ठीक है, लेकिन आप कभी नहीं जानते। जब आप सहेजते हैं तो त्रुटि उत्पन्न होती है, और '_getencoder' नामक एक विधि अमान्य डेटा वापस करने का प्रयास कर रही है, इसलिए मुझे लगता है कि फ़ाइल नाम या एन्कोडर के साथ इसका कुछ संबंध है। – DuckPuncher

+0

मैं इसे विंडोज़ पर कर रहा हूं, लेकिन मैंने 3.4 और 2.7 दोनों की कोशिश की है। मैंने एक्सटेंशन और "टीआईएफ" के बिना .tiff और फ़ाइल नाम का उपयोग करने का प्रयास किया है। – Gaudard

+0

मुझे लगता है कि त्रुटि [असंबद्ध अल्फा डेटा] (http://www.awaresystems.be/imaging/tiff/tifftags/extrasamples.html) को इंगित करती है। क्या पीआईएल एक टीआईएफ के रूप में लोड (आकार बदलने से पहले) छवि को फिर से सहेज सकता है? हो सकता है कि आप इस डेटा से छुटकारा पाने की कोशिश करें जो पीआईएल की यात्रा करता है। –

उत्तर

1

libtiff स्थापित करने के लिए http://gnuwin32.sourceforge.net/packages/tiff.htm

File "C:\Python34\lib\site-packages\PIL\TiffImagePlugin.py", line 1185, in _save 
e = Image._getencoder(im.mode, 'libtiff', a, im.encoderconfig) 

लग रहा है कि त्रुटि है कि आप को पकड़े रहा है की तरह की कोशिश करो। यह libtiff तक पहुंचने का प्रयास कर रहा है और आपने इसे इंस्टॉल नहीं किया है, इसलिए यह असफल रहा है।