PIL:图像大小调整:类似于firefox的算法 [英] PIL: Image resizing : Algorithm similar to firefox's
问题描述
我从PIL的所有4种算法中调整大小看起来很糟糕
I'm getting about the same bad looking resizing from all the 4 algorithms of PIL
>>> data = utils.fetch("http://wavestock.com/images/beta-icon.gif")
>>> image = Image.open(StringIO.StringIO(data)); image.save("/home/ptarjan/www/tmp/metaward/original.png")
>>>
>>> image = Image.open(StringIO.StringIO(data)); image.resize((36,36), Image.ANTIALIAS).save("/home/ptarjan/www/tmp/metaward/antialias.png")
>>> image = Image.open(StringIO.StringIO(data)); image.resize((36,36), Image.BILINEAR).save("/home/ptarjan/www/tmp/metaward/bilinear.png")
>>> image = Image.open(StringIO.StringIO(data)); image.resize((36,36), Image.BICUBIC).save("/home/ptarjan/www/tmp/metaward/bicubic.png")
>>> image = Image.open(StringIO.StringIO(data)); image.resize((36,36), Image.NEAREST).save("/home/ptarjan/www/tmp/metaward/nearest.png")
>>>
>>> image = Image.open(StringIO.StringIO(data)); image.thumbnail((36,36), Image.ANTIALIAS); image.save("/home/ptarjan/www/tmp/metaward/antialias-thumb.png")
>>> image = Image.open(StringIO.StringIO(data)); image.thumbnail((36,36), Image.BILINEAR); image.save("/home/ptarjan/www/tmp/metaward/bilinear-thumb.png")
>>> image = Image.open(StringIO.StringIO(data)); image.thumbnail((36,36), Image.BICUBIC); image.save("/home/ptarjan/www/tmp/metaward/bicubic-thumb.png")
>>> image = Image.open(StringIO.StringIO(data)); image.thumbnail((36,36), Image.NEAREST); image.save("/home/ptarjan/www/tmp/metaward/nearest-thumb.png")
>>>
>>> image = Image.open(StringIO.StringIO(data)); image.convert("RGB").resize((36,36), Image.ANTIALIAS).save("/home/ptarjan/www/tmp/metaward/antialias-rgb.png")
>>> image = Image.open(StringIO.StringIO(data)); image.convert("RGB").resize((36,36), Image.BILINEAR).save("/home/ptarjan/www/tmp/metaward/bilinear-rgb.png")
>>> image = Image.open(StringIO.StringIO(data)); image.convert("RGB").resize((36,36), Image.BICUBIC).save("/home/ptarjan/www/tmp/metaward/bicubic-rgb.png")
>>> image = Image.open(StringIO.StringIO(data)); image.convert("RGB").resize((36,36), Image.NEAREST).save("/home/ptarjan/www/tmp/metaward/nearest-rgb.png")
但结果看起来更糟糕,只是在firefox中调整大小。
But the results look much worse that just resizing in firefox.
< a href =http://paulisageek.com/tmp/metaward/images.html =nofollow noreferrer> http://paulisageek.com/tmp/metaward/images.html
如何使用PIL(或其他python图像库)获得与firefox结果类似的效果?
How can I get a similar effect to the firefox result using PIL (or another python image library)?
编辑:将鼠标悬停在每张图片的上方
EDIT : Hover your mouse to see what each image is
http://paulisageek.com/tmp/metaward/original.png
http://paulisageek.com/tmp/metaward/antialias.png
http://paulisageek.com/tmp/metaward/bicubic.png
http://paulisageek.com/tmp/metaward/bilinear.png
http://paulisageek.com/tmp/metaward/nearest.png
http://paulisageek.com/tmp/metaward/antialias-thumb.png
http://paulisageek.com/tmp/metaward/bicubic-thumb。 png
http:// paulisageek.com/tmp/metaward/bilinear-thumb.png
http://paulisageek.com/tmp/metaward/nearest-thumb.png
http://paulisageek.com/tmp/metaward/antialias-rgb.png
http://paulisageek.com/tmp/metaward/bicubic-rgb.png
http:// paulisageek。 com / tmp / metaward / bilinear-rgb.png
http://paulisageek.com/tmp/metaward/nearest-rgb.png
http://paulisageek.com/tmp/metaward/original.png http://paulisageek.com/tmp/metaward/antialias.png http://paulisageek.com/tmp/metaward/bicubic.png http://paulisageek.com/tmp/metaward/bilinear.png http://paulisageek.com/tmp/metaward/nearest.png http://paulisageek.com/tmp/metaward/antialias-thumb.png http://paulisageek.com/tmp/metaward/bicubic-thumb.png http://paulisageek.com/tmp/metaward/bilinear-thumb.png http://paulisageek.com/tmp/metaward/nearest-thumb.png http://paulisageek.com/tmp/metaward/antialias-rgb.png http://paulisageek.com/tmp/metaward/bicubic-rgb.png http://paulisageek.com/tmp/metaward/bilinear-rgb.png http://paulisageek.com/tmp/metaward/nearest-rgb.png
它看起来像RGB然后是ANTIALIS看起来最好。还有其他建议吗?
It looks like the RGB and then ANTIALIS looks the best. Any other recommendations?
作为参考,这是最好的:
For reference, this is the one that looked the best :
>>> image = Image.open(StringIO.StringIO(data));
>>> image.convert("RGB").resize((36,36), Image.ANTIALIAS)
推荐答案
我用Python调整了原始的大小,并找到了与你相同的结果。我还用GIMP调整了原始的大小,我也得到了同样的(如果不是低劣的)质量。这让我怀疑Firefox欺骗。可能它转换为RGB(原始模式是索引颜色)。因此,以下代码:
I resized the "original" with Python and found the same results as you did. I also resized the "original" with GIMP and I got the same (if not inferior) quality. This made me suspect that Firefox cheats. Possibly it converts to RGB ("original" mode is indexed color). Thus the following code:
import Image
im=Image.open("beta-icon.gif")
im = im.convert("RGB")
im=im.resize((36,36), Image.ANTIALIAS)
im.save("q5.png")
结果几乎和Firefox一样好。
The result is almost as good as that of Firefox.
这篇关于PIL:图像大小调整:类似于firefox的算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!