私はgtk.gdk.PixbufLoaderを数年間使用しています。glib.GError:JPEGイメージファイルの解釈エラー(サポートされていないマーカータイプ0x05)
今日、私は新しい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-magick)を出力します。
これは、1つではなく、すべてのファイルで発生します。これは、ファイルが壊れていないという結論につながります。
何が間違っている可能性がありますか?ここで
は、ファイルの1つです。ここ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()
あなたは1
へchunksize
を設定した場合、それは動作します。
130000
をchunksizeとして使用すると、write()
への最初の呼び出しは失敗します。
これをトリガーするコードを含めると、人々がそれを再現できるようにするのがよいでしょう。 – nemequ
@nemequはい、そうです。例外を再現するために小さなスニペットを追加しました。 – guettli
なぜあなたは負荷をチャンクしていますか? pixbufloader.write()は完全なイメージを必要とします。私はpixbufloaderによって返されたブール値をチェックすることを前提としています - >前の繰り返しでは、イメージをデコードするのに十分なデータがないので、例外が "偽"になるでしょう。次に、あなたはどこにもいなくても(そしてデコーダはステートレスのように)、不明なマーカーで始まります。 – artemonster