Python PIL 有抗锯齿方法吗?

问题描述 投票:0回答:3

对于PIL中的直线和椭圆,图像比较粗糙。

我发现抗锯齿仅适用于调整大小和缩略图。

画直线或椭圆时有什么办法可以做到抗锯齿吗?

python python-imaging-library antialiasing
3个回答
41
投票

本地实现这一点的唯一方法是使用超级采样。以所需尺寸的倍数渲染图像,然后使用 resize

 
resample=Image.ANTIALIAS
,例如:

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

5
投票

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

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

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


0
投票

im = im.resize((宽度 // 2, 高度 // 2), resample=Image.LANCZOS)

ANTIALIAS 更名为 LANCZOS 添加了新的 LANCZOS 常数而不是 ANTIALIAS。

最初添加 ANTIALIAS 时,它是唯一基于卷积的高质量滤波器。它的名字应该反映了这一点。从 Pillow 2.7.0 开始,所有调整大小方法都基于卷积。从现在开始,它们全部都是抗锯齿的。而ANTIALIAS滤镜的真实名称是Lanczos滤镜。

保留 ANTIALIAS 常量是为了向后兼容,它是 LANCZOS 的别名。

© www.soinside.com 2019 - 2024. All rights reserved.