タイトルが分かりずらくて申し訳ありません。
現在tkinterでGUIを作成しております。
転売防止などのために、製品にロゴを埋め込もうと思っています。
この目的のためには、配布するファイルの中に、ロゴ用の画像をおいたら意味なくないか?と思ったためバイナリデータをコードに入れておき製品を読み込む時に画像にしたいと思いました。
これは上手くいきました。
test1.python
1import io 2from PIL import Image 3tmpimg = Image.open('etc/logo.png') 4with io.BytesIO() as output: 5 tmpimg.save(output,format="PNG") 6 contents = output.getvalue()#バイナリ取得 7 img_from_str = Image.open(io.BytesIO(contents))#バイナリから画像に変換 8 img_from_str.save('image_from_str2.png') 9 10
そのためcontents
を出色して、.pyファイルに文字列として貼り付け、再度読み込めがいいかと思ったのですが、上手くいきません。
どればいいのでしょうか?
試したこととしまして、
ファイルに出力するデータをstr(contents)
として、読み込む時にio.BytesIO(imgbytes_str.encode())
としました
test2.python
1import io 2from PIL import Image 3tmpimg = Image.open('etc/logo.png') 4with io.BytesIO() as output: 5 tmpimg.save(output,format="PNG") 6 contents = output.getvalue()#バイナリ取得 7 with open('logo.dat', 'w') as f: 8 f.write(str(contents)) 9 with open('logo.dat', 'r') as f: 10 imgbytes_str =f.read() 11 img_from_str = Image.open(io.BytesIO(imgbytes_str.encode())) 12 img_from_str.save('image_from_str2.png')
エラー分
File "test.py", line 1123, in <module>
img_from_str = Image.open(io.BytesIO(imgbytes_str.encode()))
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/PIL/Image.py", line 2958, in open
raise UnidentifiedImageError(
PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7fe6041d6900>
回答2件
あなたの回答
tips
プレビュー