Соответствующей главой документации является эта , и я думаю, что это довольно ясно: если, например, вы хотите декодировать файлы изображений в новом формате .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
, и чтобы разрешить1024 * чтение изображения, а также self.tile
, список дескрипторов плиток снова в формате, указанном в этой главе (включая смещение файла, которое, как вы знаете, вы знаете, и декодер -- если исходные или битовые декодеры, описанные в главе, неВ соответствии с вашими потребностями глава рекомендует изучить источники некоторых из многих поставляемых декодеров, таких как JPEG, PNG и т. д.).