用Python进行简单图像处理

4

我想做的事情:

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

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

PIL存在的问题:

就调整大小而言,我希望它有一种方法可以进行智能调整大小(保持比例)。此外,当将其保存为JPEG时,我似乎无法控制其质量级别。我不得不将其保存为PNG以保持完全质量,这相当耗费空间。

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

问题

是否有其他更先进的Python图像库,可能更加更新,或包含我正在寻找的一些功能?是否有任何公共函数可以执行我要求的操作?我不介意自己编写这些代码,但想先检查一下。谢谢!


你已经写了什么?如果我们知道你遇到的具体问题,PIL 可能可以处理这个任务。 - msw
3个回答

4
关于调整大小,我希望它有一种智能调整大小的方法(保持比例)。
既然这可能只是Python中的一两行代码,我不明白为什么需要在库的界面中添加此功能。
此外,当将其保存为JPEG格式时,我似乎无法控制其质量水平。
引用手册
save方法支持以下选项:
quality
图像质量,从1(最差)到95(最佳)的比例。默认值为75。应避免使用高于95的值;100会完全禁用JPEG量化阶段。
你试过了吗?如果是这样,为什么没有帮助呢?

1

同意Jim关于比例的观点。你谈论的是一个如此微不足道的操作,可以轻松地内联到任何地方,说实话,我甚至不会在API中寻找该功能/选项。当你调用.resize(factor = 0.8, keepRatio = True)时,你输入的文本量与 punching in .resize(hFactor = 0.8, vFactor = 0.8)相同。

至于库,你可以看一下PythonMagick的imageMagick: http://www.imagemagick.org/script/index.php

它可以进行调整大小(使用可敬的插值器)并写入多种格式,提供文本叠加功能,或者如果你有自己想要粘贴的水印,则提供简单的合成功能。

在我最近处理这个问题的几个地方,我使用了它而不是PIL,并且对我需要的简单东西感到满意,尽管那是通过magick++完成的,而不是使用Python绑定完成的,但我怀疑体验不会有太大的不同。不过我完全不了解PIL,所以我不知道它与之相比如何。


我有同样的问题,我也使用了ImageMagick(命令行版本)-它简单易用,而且你不需要了解任何关于图像的知识。 - Jochen Ritzel

0
在紧急情况下,将图像转换为numpy数组,按您的意愿进行修改,然后再转换回去。

请问您能否稍微解释一下吗?它们是否内置了某种图像处理功能,还是我只是在处理一个大数组。 - Shane Reustle
将您的图像视为一个大数组正是我所建议的。例如,如果您想要进行某种非常时髦的水印处理,涉及到超过叠加透明图像的操作。 - Paul Harrison

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接