PIL中thumbnail处理后对象为NoneType,调用save报错问题排查
问题解决:Pillow thumbnail方法导致对象变为NoneType的原因与修复
问题根源
你遇到的NoneType错误,本质是对Pillow库thumbnail()方法的使用误解:
thumbnail()是原地修改图片对象的方法,它不会返回新的Image实例,执行后返回值固定为None- 你写的
letter_to_paste = letter_to_paste.thumbnail((100,100)),相当于把None赋值给了原本存储Image对象的变量,直接覆盖了之前通过Image.open()得到的有效对象,后续调用save()自然会触发AttributeError
修复后的代码
只需要去掉赋值操作,直接调用thumbnail()即可保留原Image对象的引用:
def select_letter_to_paste(): letter_to_paste = Image.open(f'{letter_folder}\\TEST-A.jpg') # Windows路径建议用双反斜杠或原始字符串避免转义问题 letter_to_paste.thumbnail((100,100)) # 直接调用方法,不赋值返回值 print(f'inside select_letter_to_paste, letter_to_paste is a {type(letter_to_paste)}.') letter_to_paste.save('test_letter.jpg') return letter_to_paste
额外提醒
Windows系统下路径字符串里的单反斜杠\会被当作转义字符,建议改成双反斜杠\\或者使用原始字符串r'{letter_folder}\TEST-A.jpg',避免出现路径解析错误。
内容的提问来源于stack exchange,提问作者pblnxblndr
相关产品推荐
相关产品推荐

