It would be cool to be able to read PNG image data, here is an example for picture with two chunks:
def parseImageData(parent):
import zlib
from hachoir_core.field import EncodedFile, Field
from hachoir_core.stream import StringInputStream
from hachoir_core.bits import str2hex
def deflate(stream, field):
data = stream.readBytes(0, stream.size//8)
stream =Field.createInputStream(field["/data[1]/image_data"])
data += stream.readBytes(0, stream.size//8)
warning("data=%r (len %s)" % (data[:20], len(data)))
data = zlib.decompress(data)
source = "deflate:source=(%s), offset=%s" % (stream.source, field.absolute_address)
warning("data=%r (len %s)" % (data[:20], len(data)))
return StringInputStream(data, source)
yield EncodedFile(parent, "image_data", parent["size"].value, deflate)
zlib doesn't work with GIF parse.
Link/Fragment have to be used in EXIF parser.