Windows上でpythonを使用してpngイメージをbase64にエンコードするにはどうすればよいですか?Windowsのpythonでbase64 png
iconfile = open("icon.png")
icondata = iconfile.read()
icondata = base64.b64encode(icondata)
上記はLinuxおよびOSXでは問題なく動作しますが、Windowsでは最初の数文字がエンコードされて短くなります。どうしてこれなの?
Windows上でpythonを使用してpngイメージをbase64にエンコードするにはどうすればよいですか?Windowsのpythonでbase64 png
iconfile = open("icon.png")
icondata = iconfile.read()
icondata = base64.b64encode(icondata)
上記はLinuxおよびOSXでは問題なく動作しますが、Windowsでは最初の数文字がエンコードされて短くなります。どうしてこれなの?
open("icon.png", "rb")
私は、Windowsに非常に慣れていないんだけど、私は何が起こっているのか想像するファイルが(レガシーの理由から)Windows is interpreting as the end of the fileは、それが開かれたことを文字(0x1A)が含まれていることですテキストモード。もう1つの問題は、Windows上でテキストモード( 'b'なし)でファイルを開くと行末が書き直されることです。この行末は、通常、行の終わりを示さないバイナリファイルを破棄します。
マイルからの回答を強化するためには、first eight bytes in a PNG fileは特別に設計されています
があった場合 チェックするには、UNIXの行末文字、 -
+1です。 – Brian
彼は確かに正解です、linux/osxでそれがなくてもうまくいかない方法 – directedition
Linus/OSXはバイナリファイルとテキストファイルを同じ扱いにしますが、Windowsはバイナリファイルとは異なるテキストファイルを扱います。また、正しい答えとしてマークするには、彼の答えの横にあるチェックボックスをクリックする必要があります。 – Powerlord