【问题标题】:Simple Image Manipulation with Python使用 Python 进行简单的图像处理
【发布时间】:2010-11-01 00:02:09
【问题描述】:

我想做的事:

我想让用户能够上传任意大小的图片。如果该图像超过 1024 宽或超过 768 高,则会调整其大小。然后它将图像大小调整到这些范围内,但保持比例。然后在右下角添加半透明水印,保存文件。

在添加水印之前,它会创建图像的副本并将其调整为缩略图大小(同时保持比例)并将其保存在单独的文件夹中。

PIL 的问题:

就调整大小而言,我希望它能够进行智能调整大小(保持比例)。此外,将其保存为 JPEG 时,我似乎对质量水平没有太多控制。我不得不将它保存为 PNG 以保持完整的质量,这非常重。

对于缩略图,通读 PIL 的文档听起来可能很困难,但我可能错了。

问题

是否有任何其他更高级的 Python 图像库可能更新一些,或者包含一些我正在寻找的功能?是否有任何公共功能可以做我正在寻找的我可以使用的功能?我不介意自己写这些东西,但想先检查一下。谢谢!

【问题讨论】:

  • 到目前为止你写了什么?如果我们知道您遇到了哪些具体问题,PIL 可能可以处理该任务。

标签: python image python-imaging-library


【解决方案1】:

就调整大小而言,我希望 它会有一种聪明的方法 调整大小(保持比例)。

鉴于这可能是 Python 中的一两行,我不明白为什么需要在库的接口中。

另外,我似乎没有多少 控制质量水平时 将其保存为 JPEG。

引用handbook

save 方法支持以下 选项:

质量

图像质量,从 1 开始 (最差)到 95(最好)。默认是 75. 应避免高于 95 的值; 100 完全禁用 JPEG 量化阶段。

你试过了吗?如果有,为什么没有帮助?

【讨论】:

    【解决方案2】:

    同意吉姆关于比例的观点。您正在谈论这样一个微不足道的操作,可以轻松地在任何地方内联,老实说,我什至不会在 API 中寻找功能/选项。在您调用 .resize(factor = 0.8, keepRatio = True ) 的那一刻,您输入的文本数量与 .resize(hFactor = 0.8, vFactor = 0.8) 中相同。

    至于库,您可以使用 PythonMagick 查看 imageMagick: http://www.imagemagick.org/script/index.php

    它会调整大小(使用可观的插值器)并写入多种格式,提供开箱即用的文本覆盖,或者如果您有自己想要粘贴的水印,则可以进行简单的合成。

    在我必须处理问题的最后几个地方使用它而不是 PIL,对于我需要的简单东西我很满意,虽然是通过 magick++,而不是 Python 绑定,但我怀疑经验会很不一样。不过与 PIL 完全脱节,所以我不知道它会如何比较。

    【讨论】:

    • 我也遇到了同样的问题,并且也使用了 imagemagick(命令行版本)——它简单、容易,而且您不必对图像有任何了解。
    【解决方案3】:

    在紧要关头,将 Image 转换为 numpy 数组,随意修改,然后再转换回来。

    【讨论】:

    • 你能解释一下吗?他们是否内置了某种图像处理功能,或者我只是在处理一个大数组。
    • 将您的图像视为一个大数组正是我的建议。例如,如果您想做某种特别时髦的水印,而不仅仅是覆盖透明图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 2021-05-27
    相关资源
    最近更新 更多