PIL:图像大小调整:类似于firefox的算法 [英] PIL: Image resizing : Algorithm similar to firefox's

查看:96
本文介绍了PIL:图像大小调整:类似于firefox的算法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆