Bild direkt in Python Script einbauen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Requester
User
Beiträge: 26
Registriert: Samstag 10. Mai 2008, 21:59

Ich hab jetzt meiner Startdatei ein Splash Screen hinzugefügt mit wx.splashscreen.

Allerdings gibt man dort ja einen Pfad an. Ich habe in anderen Programmen gesehen das man auch das Bild als "Code" direkt in die Python Datei einbinden kann, so bräuchte ich dann kein Zusätzliches Bild im selben Ordner meiner Datei liegen haben.

Code: Alles auswählen

class MySplashScreen(wx.SplashScreen):
    """
Create a splash screen widget.
    """
    def __init__(self, parent=None):
        aBitmap = wx.Image(name = "bild.jpg").ConvertToBitmap()
        splashStyle = wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT
        splashDuration = 5000 # milliseconds

        wx.SplashScreen.__init__(self, aBitmap, splashStyle,
                                 splashDuration, parent)
        wx.Yield()
Damit lese ich ja die Bild Datei, kann mir jemand sagen wie ich an den "Code" komme den ich dann anstatt der Datei dort eingeben kann?

Ich weiß leider nicht wie das genau heißt, sowas hier meine ich:

Code: Alles auswählen

def bildTest():
    return \
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0f\x08\x06\
\x00\x00\x00\xedsO/\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
\x01\xb0IDAT(\x91\x9d\x93AK\x1bQ\x10\xc7\x7f\xef\xa5\x17o\xee\xc1\xb8\xf4"\
\x98\xc6\xf4\xa6T<$\xa5\xde\xfc\x00\xb6\xd2J\x14$mO5\x82\xe0\x07\xf0\x13x\
\x10M\n\x1aP\x90\xe6 \x08\xa2&\x88\xc1`\x0f\xdd\xb8\xb4YvK[Z\xb6Y\xf1\xa6\'\
\xc9\xa1W_O\xbb\xecjZ\xc4\x81\xc7\xf0f\xfe\xf3\x9b\x99\x07\x0f!c\xf8\'?7\xaf\
\xde\xafo\xaap,\x9cs]\xf7VN\x12\xb2\xb8\x94|\xffj\xe38\x8e\n\xc7?\x19\r\x050\
\x90z,\xb8a\x11\xc0\xe2\xca\xb2\x88K\xc9\xdaZ)"*\x7f(\xdf\xac\xeb\x0c\xf0-\
\x95JR\xab\xd5\x14@\xb5RQ\x00\xaf&\'\xef\x06X\\Y\x16Wn\x8b\xdd\xdd=<\xefLU\
\xaa\x87\x00\x8c>{zk|\x80\x07\x9d\x82Z2\xc1H"\xc1\xc1\xc1\xfe?G\xff\xef\nWn\
\x8b\x8b\xcb\x0b\xf2\xb3\xef\xee\x07\xd0\x92\t\xf4^\x9d\xd5B\x91\xec\xcc\x9b\
\xfbM\xf0\xf9\xf0\x88\xa1\xc1A~}k\x12\x97\x1de\x00\x08!c\x00|\xa9\xd7\x95W\
\xda\x02 m\xd842C\xbc,o\x88\xedlN\xf9w\x80G\x0by\x9e\x0c\x0f\x07\x0f*\xfd\
\xe2\xde\xd7\x0bH\xef\x9c\xb6\xe5\x04\xc2\xb0o[\x0e\xd2;\xa7\xe7\xc5[\xacfSE\
\x00^i\x0bS\xd7\x988\xad\x0b5\xfd\x1c \xe8\xe2\xfb\x87\xb39&N\xeb\xc2\xd45~/\
\xadF\xdf m\xd8\\\xf7\xf7\x01\xd0\xfd\xa3\x85\xa9k\x91=M]\xe3O\xc3\x02\xe0\
\xba\xbf\x8f\xb4aG\x01\xa6\xae\xd1\xb6\x1c\xfc}\xbb\xa6\xc6#\x80\xae\xa9q\
\xd2\x86\xcdv6\xa7\xda\x96\x13m d\x8c\x9f\xc7\'j\'3\xa6v2c\xaaZ(v\xfc\x8d\
\xd5B1\xd04O>\x06\x9a\xbfO\xcc\xa84\xa1\x9d\xc6\x7f\x00\x00\x00\x00IEND\xaeB\
`\x82' 
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

O__O Wozu? Im Notfall zeichnest du mit PIL ein Bildobjekt und zeichnest dsa ein ._. Aber Bilder wie einen Blop im Quellcode zu speichern ist schon fei heftig oo
Requester
User
Beiträge: 26
Registriert: Samstag 10. Mai 2008, 21:59

BlackVivi hat geschrieben:O__O Wozu? Im Notfall zeichnest du mit PIL ein Bildobjekt und zeichnest dsa ein ._. Aber Bilder wie einen Blop im Quellcode zu speichern ist schon fei heftig oo
Naja, das Bild ist nicht besonders groß. Ich könnte es auch in einer anderen Datei speichern und die dann importieren. Ich möchte nur gerne wissen wie man an diesen Quellcode ran kommt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Requester hat geschrieben:Ich habe in anderen Programmen gesehen das man auch das Bild als "Code" direkt in die Python Datei einbinden kann, so bräuchte ich dann kein Zusätzliches Bild im selben Ordner meiner Datei liegen haben.
Hallo Requester!

http://www.python-forum.de/post-98105.html#98105

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Requester
User
Beiträge: 26
Registriert: Samstag 10. Mai 2008, 21:59

gerold hat geschrieben:
Requester hat geschrieben:Ich habe in anderen Programmen gesehen das man auch das Bild als "Code" direkt in die Python Datei einbinden kann, so bräuchte ich dann kein Zusätzliches Bild im selben Ordner meiner Datei liegen haben.
Hallo Requester!

http://www.python-forum.de/post-98105.html#98105

mfg
Gerold
:-)
Danke, genau sowas hab ich gesucht. ;)
Requester
User
Beiträge: 26
Registriert: Samstag 10. Mai 2008, 21:59

Ok, ich habs hinbekommen, jetzt hab ich da sowas:

Code: Alles auswählen

# ***************** Catalog starts here *******************

catalog = {}
index = []

class ImageClass: pass

#----------------------------------------------------------------------
def getTestPicData():
    return zlib.decompress(
'x\xda4\x9a{<\x93\xef\xff\xc7\xe7<\xe5\xb0QB\x8e3E\xc9\xb9\x1crn\xce\xc7\x1c\
\x12r\xaa(\xe4|>\x9f3%\xa7\x96\xf3!\x15\n\xa30\xa7\x99s\x11\x93\xb4\xd8\'\
\xb3-\t\xb1l1\x0cs\xf8\xf9\xfe\xf1\xbb\xff\xb8\xef\xfb\xbf\xebq]\xd7\xfbz\
\xbe^\xaf\xeb\xf1\xce\xb6\xb31\xe5=%z\n\x00\x00\xf0\x9a\x9b\xc1\xec\x01\x00\
\x96\xfc\x93\xff' )

def getTestPicBitmap():
    return BitmapFromImage(getTestPicImage())

def getTestPicImage():
    stream = cStringIO.StringIO(getTestPicData())
    return ImageFromStream(stream)

index.append('TestPic')
catalog['TestPic'] = ImageClass()
catalog['TestPic'].getData = getTestPicData
catalog['TestPic'].getImage = getTestPicImage
catalog['TestPic'].getBitmap = getTestPicBitmap
Mir ist allerdings jetzt nicht ganz klar, wie ich das hier in mein obiges Script einbauen kann. Muss da irgendwas zusätzlich importiert werden damit ich das hier, anstatt den Pfad des Bildes, wie ich das oben gemacht habe verwenden kann?
Zuletzt geändert von Requester am Mittwoch 4. Juni 2008, 14:30, insgesamt 1-mal geändert.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Ungetestet:

Code: Alles auswählen

wx.SplashScreen.__init__(self, getTestPicBitmap(), splashStyle, splashDuration, parent)
MfG
HWK
Requester
User
Beiträge: 26
Registriert: Samstag 10. Mai 2008, 21:59

HWK hat geschrieben:Ungetestet:

Code: Alles auswählen

wx.SplashScreen.__init__(self, getTestPicBitmap(), splashStyle, splashDuration, parent)
MfG
HWK
Stimmt, klappt. Ich hatte es mit getTestPicData() versucht, aber das ging natürlich nicht, es muss ja erst zur Bitmap umgewandelt werden. Dank dir!
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Requester hat geschrieben: Ich weiß leider nicht wie das genau heißt, sowas hier meine ich:

'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x0f\x08\x06\
\x00\x00\x00\xedsO/\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
\x01\xb0IDAT(\x91\x9d\x93AK\x1bQ\x10\xc7\x7f\xef\xa5\x17o\xee\xc1\xb8\xf4"\
\x98\xc6\xf4\xa6T<$\xa5\xde\xfc\x00\xb6\xd2J\x14$mO5\x82\xe0\x07\xf0\x13x\
\x10M\n\x1aP\x90\xe6
...
OpCode mein ich, zumindest sehen so viele Exploits aus :D
Antworten