Don*_*Don 9 python thumbnails python-imaging-library
我有一个带有黑色背景和白色线条的2D绘图(从Autocad导出),我想使用Python PIL库创建一个保留行的缩略图.
但是我使用"缩略图"方法得到的只是一张散布着白点的黑色图片.
请注意,如果我将图像放入具有固定宽度的IMG标记中,我将获得我想要的内容(但图像已完全加载).
您的评论之后,这是我的示例代码:
from PIL import Image
fn = 'filename.gif'
im = Image(fn)
im.convert('RGB')
im.thumbnail((300, 300), Image.ANTIALIAS)
im.save('newfilename.png', 'PNG')
Run Code Online (Sandbox Code Playgroud)
我能怎么做?
Mar*_*som 13
使用的默认调整大小方法thumbnail是NEAREST,这是一个非常糟糕的选择.如果你调整到原来的大小,例如1/5,它会输出一个像素,并抛出了未来4 -一像素宽行只有一个1,满分5显示出来的机会,所有的结果!
令人惊讶的是,BILINEAR和BICUBIC并没有好多少.他们采用一个公式并将其应用于距离源点最近的2或3个像素,但仍然有许多像素看不到它们,并且公式将无论如何都会强调该线.
最好的选择是ANTIALIAS,它似乎考虑了所有原始图像而不丢弃任何像素.线条会变暗,但不会完全消失; 如果需要,你可以做一些额外的步骤来改善对比度.
请注意,如果您正在使用调色板图像,则所有这些方法都将回退到NEAREST,即im.mode == 'P'.您必须始终转换为'RGB'.
from PIL import Image
im = Image.open(fn)
im = im.convert('RGB')
im.thumbnail(size, Image.ANTIALIAS)
Run Code Online (Sandbox Code Playgroud)
以下是来自electronics.stackexchange网站的示例https://electronics.stackexchange.com/questions/5412/easiest-and-best-poe-ethernet-chip-micro-design-for-diy-interface-with-custom- ARD/5418#5418
使用默认的NEAREST算法,我假设它与您的结果类似:

使用ANTIALIAS算法:
