是否有任何高质量的编程解决方案可以将不透明背景的 jpeg 转换为透明背景的 png?
这里的常见用例是用户上传具有白色/彩色背景的 jpeg 徽标。将白色像素切换为透明像素(相当)简单,但这会留下锯齿伪影。理想的解决方案本质上是“消除”锯齿(给定已知的背景颜色)。该解决方案至少必须击败 ImageMagick 的 bg_removal 脚本 (http://imagemagick.org/Usage/scripts/bg_removal)。
The common use case here is a user uploading a jpeg logo with a white/color background. It's (fairly) simple to switch the white pixels to transparent ones, but this leaves aliasing artifacts. An ideal solution would essentially "undo" the aliasing (given a known background color). At a minimum, the solution must beat the bg_removal script for ImageMagick (http://imagemagick.org/Usage/scripts/bg_removal).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
GIMP 中的“Color to Alpha”算法看起来做得相当不错。源代码是 GPL,可以在 此处找到。 此处演示了 GIMP 算法如何处理徽标等内容,以及 GIMP 手册Color-to-Alpha 页面位于此处。
看起来以编程方式执行此操作的最简单方法是使用 GIMP 批处理模式。
The "Color to Alpha" algorithm in GIMP looks like it does a pretty good job. The source is GPL and can be found here. A demonstration of what the GIMP algorithm does with something like a logo is here, and the GIMP manual page for Color-to-Alpha is here.
It looks like the most straightforward way to do this programmatically would be to use GIMP batch mode.
正如所承诺的,这是一个适用于普通白色的可行解决方案 -->阿尔法用例。它在具有标准 GIMP 安装 (2.6.8) 的 Ubuntu 10.04.1 LTS 服务器上运行。
我使用 subprocess 模块从 Python(在 Django 中)执行此代码(code_as_string 是将上面的代码作为字符串,插入了 input_filepath:
As promised, here's a working solution for the common white --> alpha use case. This is running on an Ubuntu 10.04.1 LTS server with the standard GIMP installation (2.6.8).
I execute this code from Python (within Django) using the subprocess module (code_as_string is the above code as a string, with input_filepath inserted: