[解決済み】画像ファイルをbase64でエンコードする
2022-04-10 02:17:57
質問
base64モジュールを使って画像を文字列にエンコードしたいのですが、どうすればいいですか?しかし、問題にぶつかりました。エンコードしたい画像をどのように指定すればいいのでしょうか?画像のディレクトリを使おうとしましたが、それは単にディレクトリがエンコードされることになります。私は実際の画像ファイルをエンコードしたいのです。
EDIT
このスニペットを試してみました。
with open("C:\Python26\seriph1.BMP", "rb") as f:
data12 = f.read()
UU = data12.encode("base64")
UUU = base64.b64decode(UU)
print UUU
self.image = ImageTk.PhotoImage(Image.open(UUU))
が、以下のようなエラーが発生します。
Traceback (most recent call last):
File "<string>", line 245, in run_nodebug
File "C:\Python26\GUI1.2.9.py", line 473, in <module>
app = simpleapp_tk(None)
File "C:\Python26\GUI1.2.9.py", line 14, in __init__
self.initialize()
File "C:\Python26\GUI1.2.9.py", line 431, in initialize
self.image = ImageTk.PhotoImage(Image.open(UUU))
File "C:\Python26\lib\site-packages\PIL\Image.py", line 1952, in open
fp = __builtin__.open(fp, "rb")
TypeError: file() argument 1 must be encoded string without NULL bytes, not str
何が間違っているのでしょうか?
どうすればいいですか?
質問の意味がよくわからないのですが。私は、あなたが以下のようなことを行っていると仮定します。
import base64
with open("yourfile.ext", "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
もちろん、まずファイルを開いてその中身を読まなければならない。単にパスをエンコード関数に渡すことはできない。
編集してください。 OK、最初の質問を編集した後のアップデートです。
まず、Windowsでパスの区切り文字を使うときは、誤ってエスケープ文字を打ってしまわないように、生の文字列(文字列の前に'r'を付ける)を使うことを覚えておいてください。次に、PILのImage.openは、ファイル名か、ファイルのようなもの(つまり、オブジェクトはread, seek, tellメソッドを提供しなければならない)を受け取ります。
とはいえ、cStringIOを使えば、メモリバッファからそのようなオブジェクトを作成することができます。
import cStringIO
import PIL.Image
# assume data contains your decoded image
file_like = cStringIO.StringIO(data)
img = PIL.Image.open(file_like)
img.show()
関連
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] base64文字列をエンコード、デコードするにはどうしたらいいですか?
-
[解決済み] HTMLでBase64画像を表示する方法
-
[解決済み] Base64エンコーディングは何に使うのですか?
-
[解決済み] JavaScriptで画像をBase64文字列に変換するにはどうすればよいですか?
-
[解決済み】Node.jsでBase64エンコードを行うにはどうすればよいですか?
-
[解決済み】JavaScriptで文字列をBase64にエンコードするにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
任意波形を生成してtxtで保存するためのPython実装
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み] base64の文字列を画像に変換し、ファイルシステムに保存する。