2017-02-25 10 views
2

나는 here에서 가져온 파이썬 응용 프로그램을 가지고 있지만 사용하고자하는 이미지를 넣고 싶습니다. 스크립트 내의 아이콘에 대해 성능 문제가있을 수 있음을 알고 있지만 현재 문제가 아니므로 모든 파일을 하나만 남겨두면 친구와 컴퓨터간에 쉽게 변경할 수 있습니다. 내 질문은 어떻게 파일 자체에 대한 경로를 가져 오는 코드 줄이 포함 된 아이콘 이미지 (png 파일, 모든 유형이 될 수 있음)를 사용할 수 있습니까?wx.iconfrombitmap (wx.bitmap (path))과 함께 사용할 이미지를 임베드하는 방법 python

나는 img2py, base64로 아무 것도 시도하지 않았으므로 파일이 필요하지 않은 경로라고 생각했습니다. 경로 대신 포함 된 파일을 사용하도록 스크립트 (또는 wx 라이브러리)를 변경/수정할 수 있습니까? 나는 보통이 작업을 수행

답변

2

방법은 삼중 따옴표를 사용하고 필요에 따라 줄 바꿈을 삽입 스크립트에

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

사본 '데이터'에 의해 64 기수와 ZLIB

가 포함 된 이미지 데이터를 생성 결합하는 것입니다.

data = """Tm90IGFjdHVhbCBwaWN0dXJlIGRhdGE="""

당신은 이미지 데이터를 다시 작성해야하는 경우, 바로 인코딩 및 압축

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

역 당신이 당신의 비트 맵 개체의 wxPython의 버전에 따라 다시 만드는 방법. 여러 포함 된 파일

을 사용하는 경우에도 당신은 내가 성능에 영향을 발견하지 않았습니다 이미지에서 내 용도에

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 

를 스트림에서 wx.Image을 만들 호출 한 다음 wx.Bitmap 피닉스 빌드를 할 수 사용

+1

이미지 파일을 파이썬 모듈에'PyEmbeddedImage' 객체로 인코딩하는 데 도움이되는 몇 가지 도구가 wxPython에 포함되어 있습니다.이 도구는'wx.Image','wx.Bitmap' 등으로 바꾸는 방법을 가지고 있습니다. 파이썬 -m wx.tools.img2py --help' – RobinDunn