2014-10-28 17 views
11

TLDR hatasını döndürür; Bir TIFF almaya çalışıyorum, yeniden boyutlandırıyorum, sonra kaydedin. Ancak bir hata döndürür. Kaydedilen dosya türünü png veya jpg olarak değiştirirseniz bu iyi çalışır.PIL'i değiştirmek ve ardından bir TIFF'yi kaydetmek

Sistem: Windows 7 Her iki Python 3.4 ve 2.7'yi kullanarak çalıştı.

Kodu: Ben ocr-teserakt kullanarak ve daha iyi bir verim almak için görüntüyü yeniden boyutlandırma olduğum için

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 

Bir TIFF boyutlandırmak gerekir. Program TIFF ile en iyi şekilde çalışıyor gibi görünüyor.

aldığım hatadır:

_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 

teşekkürler!

+0

Bu kod benim için çalışıyor. Düşünebildiğim tek şey, ya tiff'ler için uygun bir kodlayıcınız yok ya da belki de '.tif' üzerinde çalışıyor. Dosya adlarınızda '.tiff 'olarak değiştirmeyi denediniz mi? Linux üzerinde sadece .tif ile gayet iyi, ama asla bilemezsiniz. Kaydettiğinizde hata meydana geliyor ve '_getencoder' adlı bir yöntem geçersiz verileri döndürmeye çalışıyor, bu yüzden dosya adı veya kodlayıcıyla bir ilgisi olduğunu varsayalım. – DuckPuncher

+0

Pencerelerde bunu yapıyorum, ancak 3.4 ve 2.7'yi de denedim. Uzantısı ve "TIF" olmadan .tiff ve dosya adını kullanmayı denedim. – Gaudard

+0

Hatanın [ilişkilendirilmemiş alfa verileri] olduğunu düşünüyorum (http://www.awaresystems.be/imaging/tiff/tifftags/extrasamples.html). PIL, resmi tif olarak (resize etmeden önce) yüklemeden hemen sonra yeniden kaydedebilir mi? Belki de PIL'i gezen bu veriden kurtulmaya çalışırsınız. –

cevap

1

sizi tutuyor hata gibi 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) 

görünüyor libtiff yüklemeyi deneyin. Libtiff'e erişmeye çalışıyor ve sizin yüklemediniz, bu yüzden başarısız oluyor.

İlgili konular