ans*_*son 9 php imagemagick image-processing
是否有任何这样的方法来确定图像可以被放大多少,直到它被认为是"失焦"?
一个实际的例子(以及我试图解决的问题):
我有几种不同尺寸的图像,比如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......上述问题只是这种算法如何有用的一个实际例子.
这并不完全符合你的要求,但我认为它达到了你想要的。编写一个算法来量化图像的像素化程度并不简单,而且它肯定是特定于图像格式的(例如,仅适用于 PNG 图像),而且我真的认为没有必要实现你想要的。
因此,对于这个例子,我们假设所有图像都是完美的正方形(修改它以考虑非正方形图像是相当简单的):
假设您有一个可以调整大小的源图像列表,以及一个“结果大小” - 比如说 500 像素 x 500 像素。你可能会做这样的事情:
$resultSize = 500;
$bestRatio = PHP_INT_MAX;
$bestURL = "";
foreach($sourceImageURLs as $url)
{
$size = getimagesize($url);
$size = $size[0];
$ratio = min($resultSize, $size) / max($resultSize, $size);
if($ratio < $bestRatio)
{
$bestRatio = $ratio;
$bestURL = $url;
}
}
/*
* We've now found the image closest to our desired size. All we need
* to do is resize the image at the URL in $bestURL to $resultSize, and
* we're done.
*/
Run Code Online (Sandbox Code Playgroud)
我不认为我会担心“最有效”的图像 - 将 100x100 图像缩放到 200x200 与将 300x300 图像缩放到 200x200 会给你两个大小非常相似的图像(特别是如果你使用一些好的压缩工具,如 PNGOUT 等)。我只是从最接近所需尺寸的源图像进行缩放。
| 归档时间: |
|
| 查看次数: |
1739 次 |
| 最近记录: |