使用pyguetzli压缩JPG时触发UnicodeDecodeError的原因与解决方法
解决读取JPG文件时的UnicodeDecodeError问题
嘿,这个问题我之前也踩过坑!其实根源特别简单——你用文本模式去读取二进制格式的JPG文件啦!
错误原因
Python的open()函数默认使用文本模式('r'),这时候它会自动尝试用UTF-8编码解码文件内容。但JPG是二进制文件,开头的0xff字节是JPEG文件的标志性起始位,完全不符合UTF-8编码规则,自然就触发了UnicodeDecodeError。
直接解决方案
只需要在打开文件时指定二进制读取模式('rb')即可,这样Python就不会尝试解码,直接读取原始二进制数据,正好适配pyguetzli处理图片的需求。
修正后的代码:
input_jpg = open("/home/chariya/python/images/backup/Dendrobium_anilii_4.jpg", 'rb').read()
进阶优化建议
为了更安全地管理文件资源,推荐使用with语句(上下文管理器),它会自动帮你关闭文件,避免出现资源泄漏的情况:
with open("/home/chariya/python/images/backup/Dendrobium_anilii_4.jpg", 'rb') as img_file: input_jpg = img_file.read()
这样修改后,你就能正常读取图片数据,交给pyguetzli进行压缩处理啦!
内容的提问来源于stack exchange,提问作者Chari Pete
相关产品推荐
相关产品推荐

