【问题标题】:Is there an antialiasing method for Python PIL?Python PIL 有抗锯齿方法吗?
【发布时间】:2012-12-30 07:31:37
【问题描述】:

对于 PIL 中的线和椭圆,图像是粗糙的。​​

我发现抗锯齿仅在调整大小和缩略图中。

在画线或椭圆时有什么方法可以做抗锯齿吗?

【问题讨论】:

  • 你可以做一个低通滤波 :) 你可能会想要移动到aggdraw(或cairo,或...)以获得“更高级”的绘图。

标签: python python-imaging-library antialiasing


【解决方案1】:

在本地进行此操作的唯一方法是使用超级采样。以所需大小的倍数渲染图像,然后使用resize resample=Image.ANTIALIAS,例如:

im = im.resize((width // 2, height // 2), resample=Image.ANTIALIAS)

【讨论】:

  • 效果很好,虽然最新的 Pillow 给了TypeError: resize() got an unexpected keyword argument 'filter,所以使用就地im.thumbnail((original_width, original_height)),它也默认为resample=ANTIALIAS以获得最佳质量。
  • @Hugo:在PIL的枕头叉当前稳定版的Image.resize()方法中,关键字参数命名为resample。这可能已在 version 2.7.0 中更改。另请注意,Image.LANCZOS is the same thingImage.ANTIALIAS 相同——该方法的文档中未提及。
  • img.resize((width, height), Image.ANTIALIAS) 为我工作。谢谢!
  • 我在使用椭圆掩码时遇到了这个问题,以下答案帮助了我:stackoverflow.com/a/22336005/1092815 相同的答案,但有完整的代码示例
  • 这很棒。请注意,3 倍的乘数比 2 倍的结果要好得多,而且我觉得实际上比 4 倍要好。
【解决方案2】:

aggdraw (http://effbot.org/zone/aggdraw-index.htm) 可能是你感兴趣的东西。

aggdraw 模块在 AGG 库之上实现了基本的 WCK 2D 绘图接口。该库提供高质量的绘图、抗锯齿和 alpha 合成,同时与 WCK 渲染器完全兼容。

aggdraw 模块可以与 PIL 或 WCK 库一起使用(在 Tkinter 或本机 Windows 下)。它也可以用作独立的库。

【讨论】:

  • 有 OS X 的端口吗?
猜你喜欢
  • 2014-02-18
  • 1970-01-01
  • 2012-10-25
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 2011-07-05
相关资源
最近更新 更多