在Java中可以判断图像质量,例如dpi吗?

3
我希望能防止用户上传低质量的图片到我的网站。 我曾考虑通过限制DPI阈值来实现,但似乎这并不容易。有没有人知道解决方法?我可以接受不太精确的解决方案,例如建模DPI或偶尔出错。也可以仅适用于某些图像类型。
总之,任何提高用户生成内容的方法都会有所帮助!理想情况下,解决方案将使用Java编写,但我会考虑任何技术,只要它可以包装在Web服务中。

你可能想看一下这个问题:如何获取图像的dpi - John
1
或者您可以使用commons.apache.org的Sanselan获取信息http://www.ashishpaliwal.com/blog/2009/07/apache-sanselan-retrieving-image-information-using-sanselan/或http://commons.apache.org/sanselan/api-release/org/apache/sanselan/Sanselan.html。 - Sergey Benner
@John 是的,C#也可以 - 我很乐意用任何语言进行开发。我看到了那个问题 - 但是代码答案是从一个非常旧的帖子中复制的,并且不起作用。我也没有找到一个ImageMagick调用来完成这项工作。 - laura
你是在追求图像“质量”还是图像尺寸?DPI的定义取决于它所显示的介质,在监视器上会固定(或近似固定)。是照片还是任意图像?过度压缩吗?你实际上想要过滤什么? - James
这些是设计师上传的产品照片。我们需要它们具备杂志印刷品质。虽然我们可以进行审核,但最好从一开始就将一些低质量的照片过滤掉。 - laura
显示剩余3条评论
1个回答

3

您是否尝试使用以下API来实现此操作?

com.sun.image.codec.jpeg com.sun.media.jai.codec

这里是示例代码

import java.net.MalformedURLException;
import java.net.URL;

import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;

class CheckResolution {
  String imageURL = "test.png";

  public static void main(String[] args) throws MalformedURLException {
     CheckResolution cr = new CheckResolution();
     URL imageurl = new URL(cr.imageURL);
     PlanarImage pi = JAI.create("url", imageurl);
     int imagewidth = pi.getWidth();
     int imageheight = pi.getHeight();
     System.out.println("Image Width:" + imagewidth + " --- Image Height:" + imageheight);
  }
}

另一个与dpi相关的帖子:https://dev59.com/qWw15IYBdhLWcg3wzO1_ - user47900
谢谢你的回答 - 我会尽快在我的工作机器上安装jai扩展并尝试它。 - laura

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