Windowsでpythonを使用してpng画像をbase64にエンコードするにはどうすればよいですか?
iconfile = open("icon.png")
icondata = iconfile.read()
icondata = base64.b64encode(icondata)
上記は Linux と OSX では問題なく動作しますが、Windows では最初の数文字をエンコードしてから短くします。どうしてこれなの?
open("icon.png", "rb")
私は Windows にあまり詳しくありませんが、テキスト モードで開いたときにWindows がファイルの末尾として解釈する文字 (0x1A) がファイルに含まれていることが原因だと思います(従来の理由から)。もう 1 つの問題は、Windows でファイルをテキスト モード (「b」なし) で開くと、行末が書き換えられ、通常、これらの文字が実際には行末を示していないバイナリ ファイルが破損することです。
Miles からの回答を補強するために、PNG ファイルの最初の 8 バイトは特別に設計されています。
設計どおり、コードは 1a で停止します。