我有一个文件,其中包含一个特定格式的单个图像
特定偏移量。我已经可以获得嵌入式图像的文件了
哪个支持 read()
, seek()
,和 tell()
。我想利用
一个现有的PIL解码器来处理嵌入的图像,但能够
将整个文件视为“图像文件”本身。
鉴于此,我无法弄清楚如何做到这一点 文件 可得到 并且想知道是否有人对我的能力有任何见解 做这个。
我有一个文件,其中包含一个特定格式的单个图像
特定偏移量。我已经可以获得嵌入式图像的文件了
哪个支持 read()
, seek()
,和 tell()
。我想利用
一个现有的PIL解码器来处理嵌入的图像,但能够
将整个文件视为“图像文件”本身。
鉴于此,我无法弄清楚如何做到这一点 文件 可得到 并且想知道是否有人对我的能力有任何见解 做这个。
文档的相关章节是 这个 而且我认为这很清楚:例如,你想要解码新的图像文件 .zap
格式化,你写一个 ZapImagePlugin.py
必须执行一些事情的模块:
class ZapImageFile(ImageFile.ImageFile):
字符串属性 format
和 format_description
和一个钩子方法 def _open(self)
(后来更多);Image.register_open('zap', ZapImageFile)
和 Image.register_extension('ZAP', '.zap')
的规格 _open
方法在本章中非常清楚 - 它必须从打开的二进制文件类对象中读取图像数据和元数据 self.fp
,提高 SyntaxError
(或另一个例外)如果它检测到文件实际上不是正确的格式,请至少设置 self.size
和 self.mode
属性,以便允许 读 图像,也 self.tile
, 的列表 瓷砖描述符 再次以该章中指定的格式(包括你知道的文件偏移量和解码器 - 如果本章中记录的原始或位解码器不符合你的需要,本章建议研究一些提供的解码器的源,如JPEG,PNG等)。
我为解决这个问题所做的就是从中得到 ImageFile.ImageFile
属于嵌入格式的子代替 ImageFile.ImageFile
直。然后在 _open()
我换了 self.fp
与文件类似的嵌入式图像,并称为父级 _open()
。我不能说我特别高兴这样做,但它似乎有效。
文档的相关章节是 这个 而且我认为这很清楚:例如,你想要解码新的图像文件 .zap
格式化,你写一个 ZapImagePlugin.py
必须执行一些事情的模块:
class ZapImageFile(ImageFile.ImageFile):
字符串属性 format
和 format_description
和一个钩子方法 def _open(self)
(后来更多);Image.register_open('zap', ZapImageFile)
和 Image.register_extension('ZAP', '.zap')
的规格 _open
方法在本章中非常清楚 - 它必须从打开的二进制文件类对象中读取图像数据和元数据 self.fp
,提高 SyntaxError
(或另一个例外)如果它检测到文件实际上不是正确的格式,请至少设置 self.size
和 self.mode
属性,以便允许 读 图像,也 self.tile
, 的列表 瓷砖描述符 再次以该章中指定的格式(包括你知道的文件偏移量和解码器 - 如果本章中记录的原始或位解码器不符合你的需要,本章建议研究一些提供的解码器的源,如JPEG,PNG等)。
我为解决这个问题所做的就是从中得到 ImageFile.ImageFile
属于嵌入格式的子代替 ImageFile.ImageFile
直。然后在 _open()
我换了 self.fp
与文件类似的嵌入式图像,并称为父级 _open()
。我不能说我特别高兴这样做,但它似乎有效。