Windows에서 Python을 사용하여 PNG 이미지를 base64로 어떻게 인코딩합니까?Windows에서 파이썬의 base64 png
iconfile = open("icon.png")
icondata = iconfile.read()
icondata = base64.b64encode(icondata)
리눅스와 OSX의 미세 위의 작동하지만 Windows에서 그것은 처음 몇 문자가 다음 짧게 잘라 인코딩됩니다. 왜 이런거야?
Windows에서 Python을 사용하여 PNG 이미지를 base64로 어떻게 인코딩합니까?Windows에서 파이썬의 base64 png
iconfile = open("icon.png")
icondata = iconfile.read()
icondata = base64.b64encode(icondata)
리눅스와 OSX의 미세 위의 작동하지만 Windows에서 그것은 처음 몇 문자가 다음 짧게 잘라 인코딩됩니다. 왜 이런거야?
Open the file in binary mode :
open("icon.png", "rb")
나는 윈도우에 익숙하지 않다,하지만 난 무슨 일이 일어나고 있는지 상상하는 것 파일이 (기존의 이유로) Windows is interpreting as the end of the file가 열릴하는 문자 (0x1A)를 포함한다는 것입니다 텍스트 모드에서. 다른 문제는 Windows에서 텍스트 모드 ('b'가없는)로 파일을 열면 줄 끝이 다시 작성되어 일반적으로 줄의 끝을 나타내는 이진 파일이 손상된다는 것입니다.
마일에서 답을 증대하기는 first eight bytes in a PNG file 특별히 설계 :
귀하의 코드에서 멈추는 UNIX 기반> DOS 변환이 있다면 확인하려면, 유닉스 끝 (end-of-line) 문자 - acter, 파일이 바이너리 모드
+1 때문에 효과적입니다. – Brian
그는 정말로 정확합니다. linux/osx에서이 파일이 없으면 이상하게 작동합니다. – directedition
Linus/OSX는 이진 파일과 텍스트 파일을 동일하게 처리하지만 Windows는 이진 파일과 다른 텍스트 파일에서 캐리지 리턴을 처리합니다. 또한 정답 옆에있는 확인란을 클릭하여 정답으로 표시해야합니다. – Powerlord