如何嵌入与wx.iconfrombitmap(wx.bitmap(path))python一起使用的图像

我有一个Python应用程序,它来自here,可以根据需要进行修改,但是我想将用于图标的图像放在脚本中,我知道可能存在性能问题,但目前还不是问题,我所需要做的就是将所有文件都保存在一个文件中,这样我就可以与朋友和跨计算机轻松地进行更改.
所以我的问题是,我如何在此代码行中使用嵌入式图标图像(png文件,可以是任何类型),以获取文件的路径来代替文件本身?

   def set_icon(self, path):
    icon = wx.IconFromBitmap(wx.Bitmap(path))
    self.SetIcon(icon, TRAY_TOOLTIP)

我尝试使用img2py,base64,但没有任何效果,因此我认为这可能是所需路径而不是文件.
如何更改/修改脚本(或wx lib)以使其与嵌入式文件(而不是其路径)一起使用?

解决方法:

我通常完成此操作的方法是将base64和zlib结合在一起

通过生成嵌入式图像数据

    from zlib import compress
    from base64 import b64encode
    with open("image.png", "rb") as fileobj:
        data = b64encode(compress(fileobj.read()))

使用三引号将“数据”复制到脚本中,并根据需要插入换行符.

数据=“”“ Tm90IGFjdHVhbCBwaWN0dXJlIGRhdGE =”“

当您需要重新创建图像数据时,只需反转编码和压缩

from base64 import b64decode
from zlib import decompress
image_data = decompress(b64decode(data))

重新创建位图对象的方式取决于wxpython的版本.使用phoenix构建,您可以调用从流创建wx.Image,然后从图像创建wx.Bitmap.

from io import BytesIO
stream = BytesIO(bytearray(image_data)) # just bytes() for py3
image = wx.Image(stream, wx.BITMAP_TYPE_ANY) # wx.ImageFromStream for legacy wx
bitmap = wx.Bitmap(image) # wx.BitmapFromImage for legacy wx

在使用中,即使使用多个嵌入式文件,我也没有注意到性能影响

上一篇:为用户生成JavaScript嵌入代码


下一篇:javascript – 点击按钮时发出哔哔声