【发布时间】:2013-05-26 11:45:16
【问题描述】:
有没有这样的方法来确定图像可以放大多少直到它被认为是“失焦”?
一个实际的例子(以及我要解决的问题):
我有一张以多种不同尺寸保存的图像,例如 500x500、250x250 和 120x120。我要服务于最高效的形象,同时也是最清晰的形象。如果用户要请求 125x125 的图像,显然增加 120x120 的图像来适应不仅效率最高,而且很可能不会导致任何明显的像素化。
但是,如果用户要请求 180x180 的图像,则增加 120x120 的图像可能更有效,但很可能会呈现模糊的图像。在这种情况下,我想缩小 250x250 的图像。
显然,图像的“清晰度”可能是相对的,并且因人而异,也因图像而异,但我想知道是否有任何算法或函数来确定图像的“像素化指数”排序...谢谢!
注意:使用 PHP 和 ImageMagick 进行图像处理,因此该领域的任何答案都会很棒...
澄清:我并不是在为我上面的例子寻找一个解决方案。我正在寻找原始问题的答案:is there an algorithm that could possibly determine how "pixelated" a blown up image is...上述问题只是此类算法如何有用的一个实际示例。
【问题讨论】:
-
总是缩小。与缩小较大的原件相比,放大总是会产生较低质量的结果。最好删除不需要的数据,而不是尝试生成一开始就没有的数据。
-
@MarcB 实际上是非常正确的。始终缩小将确保您获得最佳图像质量,并且增加的尺寸充其量应该可以忽略不计(考虑到您不愿意放大小得多的图像,这会显着减小尺寸)。
-
好吧,也许是这样...但是,一个不切实际的例子是:您宁愿将 250x250 的图像缩小到 121x121,还是将 120x120 增大...这种情况下的图像质量应该是绝对可以忽略不计,但服务器负载会低得多...
-
确定使用算法的服务器负载比使用您描述的算法首先缩小要高得多。另外,您正在缓存您的渲染图像(对?),所以它不应该是一次性的。
-
是的,是的,你的权利......但是,在上传图像时做繁重的工作并将我所谓的“像素化索引”保存为静态数字不会导致在图像请求(只是简单的 int 比较)......此外,即使图像被缓存,我仍在处理请求“奇数”尺寸的用户
标签: php image-processing imagemagick