如何使用Pillow显示缩略图?遇显示报错与画质问题求助
解决Pillow缩略图显示报错与小图放大画质问题
1. new.show()报错的原因与修复
thumbnail()方法是原地修改原图像对象,它的返回值为None,所以你代码里的new变量实际是None,调用None.show()自然会触发错误。
正确写法:
如果需要保留原图,先复制一份再处理;无需保留原图的话,直接操作原图后调用show()即可:
from PIL import Image # 方式1:保留原图 img = Image.open('block.jpg') img_thumb = img.copy() img_thumb.thumbnail((400, 400), Image.Resampling.LANCZOS) img_thumb.show() # 方式2:直接修改原图 img = Image.open('block.jpg') img.thumbnail((400, 400), Image.Resampling.LANCZOS) img.show()
注意:你的原图是1616像素,远小于目标尺寸(400,400),thumbnail()仅会缩小图像(保持比例不超过目标尺寸),不会执行放大操作,所以处理后图像依旧是1616大小。
2. 小图放大画质差的优化方案
1616像素的图放大到400400属于向上采样,画质损失是分辨率不足导致的必然结果,但可以根据需求选择合适的插值方法优化:
- 想要保留像素图的方块风格,使用
Image.Resampling.NEAREST(最近邻插值),不会产生模糊:from PIL import Image img = Image.open('block.jpg') enlarged_img = img.resize((400, 400), Image.Resampling.NEAREST) enlarged_img.show() - 想要稍微平滑的效果,可尝试
Image.Resampling.BICUBIC,但依旧无法完全避免模糊问题。
内容的提问来源于stack exchange,提问作者Evan Huang
相关产品推荐
相关产品推荐

