如何检测图像的缩放系数

bir*_*rdy 0 java image imagemagick image-processing

我在这里阅读了有关该主题的相关问题:如何检测主观图像质量

我想检测用户上传的图像是否可以放大到高%(例如500%)并且仍然具有良好的图像质量。我知道“良好的图像质量”是主观的,但就我的目的而言,我会说它的意思是“图像是否像素化?”。我正在尝试寻找如何做到这一点的方法?

  • 我应该计算上传图像的大小吗?尺寸越大,放大越多可以吗?
  • 我应该计算图像的总像素数吗?
  • 我应该阅读上传图像的元标签吗?
  • 多种事物的组合?

是否有解决方案/库可以确定图像的不良像素化?

Gil*_*anc 5

使用水平和垂直像素数。

只要图像的像素多于您显示的像素,您就可以缩放。一旦显示像素多于图像像素,就必须对像素进行插值。插值越高,图像越模糊。

假设您有一张 4000 x 3000 像素的图片,而您正在显示 640 x 480 像素。

您可以水平缩放至 625% (4000 / 640),垂直缩放至 625% (3000 / 480)。较小的缩放数字为 625%。舍入到偶数缩放数字后,这张图片可以缩放至 600%,而不会出现像素化。

现在,如果您愿意对像素进行插值,您甚至可以将缩放比例提高到 600% 以上。你能变焦到多高?这取决于您认为可接受的插值。

我的猜测会高 25%。对于此示例图片,您可以在图片变得太模糊之前将其调至 800%。

如果您想安全起见,请将其保持在计算的缩放尺寸以下。如果不是,则达到您想要的最高值,并让用户确定多高才算过高。

  • 很好的建议,但是这不会捕获用户已经炸毁的图像,不是吗?假设用户有一个 64x64 的源图像,然后在上传到应用程序之前将其放大到 64kx64k。它看起来很糟糕,但如果你只考虑图像尺寸,那么你就是SOL。 (2认同)