我已经使用gtk.gdk.PixbufLoader好几年了
今天,我试着从一个新的android设备加载一个jpg文件,得到这个异常:
Traceback (most recent call last):
File "myscript.py", line 118, in next
loader.write(buf)
glib.GError: Error interpreting JPEG image file (Unsupported marker type 0x05)
同样的文件可以在eog (gnome的眼睛)中加载,我可以使用convert
(来自image-magic)而不会出错。
它发生在所有文件中,而不仅仅是一个,这使我得出结论,文件没有损坏。
怎么了?
下面是其中一个文件:http://thomas-guettler.de/20160627_163057-0.jpg
下面是重现异常的代码片段:
from gtk.gdk import PixbufLoader
pixbufloader=PixbufLoader()
chunksize=130000
fd=open('20160627_163057-0.jpg', 'rb')
while True:
bytes=fd.read(chunksize)
if not bytes:
break
print pixbufloader.write(bytes)
pixbufloader.close()
如果你设置chunksize
为1
,那么它工作。
如果我使用130000
作为块大小,那么第一次调用write()
失败。
我对你的代码进行了研究,并得出结论,正好在chunksize = 69632之后,即在chunksize = 69633时,显示了这个错误。我注意到的另一件事是这个错误与文件相关。如果我使用的文件不是这个"20160627_163057-0.jpg"的图像,错误不会发生。
所以我的结论是这个特定的文件有一些问题。请检查,谢谢。