2010-11-18 17 views
3

Ich bin ein Python-Programmierer mit Erfahrung in WxPython, und ich lerne Haskell und einen Versuch, ein kleines GUI-Projekt in wxHaskell zu kodieren. Ein Feature von wxPython, das ich noch nicht herausgefunden habe, ist PyEmbeddedImage - wo Bilder als Strings in Python-Modulen gespeichert werden können und dann von wxPython aus zugegriffen werden kann. Existiert diese Funktionalität in wxHaskell, und wenn ja, wie machen Sie das?Eingebettete Bilder in wxHaskell

Danke!

+0

Sie können Arrays von Bytes mit GHC's magischer Hash-Syntax einbetten. Der Lexer-Generator Alex macht das. Leider konnte ich beim letzten Mal, als ich nach GHC sah, keine richtige Beschreibung dafür finden (d. H. Ob es eine echte Technik ist oder als Hack verpönt). Wenn Sie einen Alex-Lexer generieren, sehen Sie in der resultierenden * .hs-Datei die Syntax. Vielleicht hat jemand bessere Kenntnisse über diese Technik? –

Antwort

2

Sie können versuchen, file-embed zu verwenden, um Datei einzubetten und dann imageCreateFromPixels zu verwenden, um Bild zu erstellen.

Verwenden imageGetPixels Datei vorzubereiten, bevor das Einbetten (zB eine wx App erstellen, die Bild von Ressourcenverzeichnis geladen wird und Serialisierung zur Datei)

0

Ich mag Yuras Vorschlag, das file-embed Paket zu verwenden, die die Aufgabe der Einbettung automatisiert Daten in eine Bytefolge.

Um zu sehen, wie dies manuell zu tun, überprüfen Sie den Haskell-Wiki-Artikel auf compiled constant data structures (z. B. in großen Karten oder anderen Datenstrukturen zu kompilieren).

Die Verwendung der bytestring und der -XOverloadedStrings Erweiterung vermeidet die Notwendigkeit von magischen unboxed Werten.