Die entsprechenden Kapitel der Dokumentation ist this one und ich denke, es ist ziemlich klar: wenn Sie zum Beispiel Bilddateien in den neuen .zap
-Format entschlüsseln wollen, schreiben Sie eine ZapImagePlugin.py
Modul, das ein paar Dinge durchführen müssen:
- haben eine
class ZapImageFile(ImageFile.ImageFile):
mit String-Attribute format
und format_description
, und eine Hook-Methode def _open(self)
(von denen später);
- auf Modulebene,
Image.register_open('zap', ZapImageFile)
und Image.register_extension('ZAP', '.zap')
Die Spezifikationen für die _open
Verfahren sind sehr deutlich im Kapitel angelegt - es Bilddaten und Metadaten aus offenen Binärdatei ähnlichen Objekt self.fp
, erhöhen SyntaxError
lesen muß (oder eine andere Ausnahme) so schnell wie möglich, wenn es erkennt, dass die Datei im richtigen Format nicht wirklich ist, zumindest self.size
und self.mode
Attribute gesetzt und um Lesen das Bild zu ermöglichen, auch self.tile
, eine Liste von Kachel Deskriptoren wieder in die Forma Die Angabe in diesem Kapitel (einschließlich der Datei-Offset, die Sie sagen, wissen, und ein Decoder - wenn die Roh-oder Bit-Decoder, die im Kapitel dokumentiert, nicht Ihren Bedürfnissen entsprechen, empfiehlt das Kapitel, die Quellen von einigen zu studieren von den vielen gelieferten Decodern, wie JPEG, PNG, usw.).
Klingt wie gute Wiederverwendung von Code. F: Hat Ihr Ansatz dazu geführt, dass ein neuer Bildtyp und eine neue Erweiterung registriert wurden, und wenn ja, war es schwierig, dies zu tun? – martineau
@martineau: Ich brauchte dies, um auf einem vorhandenen binären Datenstrom zu arbeiten, also versuchte ich nichts zu registrieren. Um genau zu sein, las ich ein PNG, eingebettet in eine Spieledatei. –