Java中检测图像编码

发布于 2024-10-09 11:24:14 字数 594 浏览 0 评论 0原文

我接受图像作为用户的输入。我只想允许 JPEG 图像。图像作为输入流(下面称为 myInputStream)到达。在下面的代码中,ImageIO.getImageReaders() 返回的 Iterator 始终为空。

ImageInputStream imageInputStream = ImageIO.createImageInputStream(
    myInputStream);
Iterator<ImageReader> iter = ImageIO.getImageReaders(imageInputStream);
if (!iter.hasNext()) {
    // this always happens
}
ImageReader reader = (ImageReader) iter.next();
if (!reader.getFormatName().equals("jpeg")) {
    // haven't got this far yet
}

我还尝试将 myInputStream 直接传递给 ImageIO.getImageReaders() ,结果相同。

I'm accepting an image as input from the user. I want to only allow a JPEG image. The image is arriving as an InputStream (called myInputStream below). In the code below, the Iterator returned by ImageIO.getImageReaders() is always empty.

ImageInputStream imageInputStream = ImageIO.createImageInputStream(
    myInputStream);
Iterator<ImageReader> iter = ImageIO.getImageReaders(imageInputStream);
if (!iter.hasNext()) {
    // this always happens
}
ImageReader reader = (ImageReader) iter.next();
if (!reader.getFormatName().equals("jpeg")) {
    // haven't got this far yet
}

I have also tried passing myInputStream directly to ImageIO.getImageReaders() with the same result.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倾`听者〃 2024-10-16 11:24:14

空迭代器通常意味着 ImageIO 没有找到一个好的图像读取器来解码您的图像。这可能是因为您在类路径中缺少正确的解码器,或者您的图像具有不受支持的颜色模型

An empty iterator usually means ImageIO hasn't found a good image reader for decoding your image. This may be because you'are missing the right decoder in your classpath, or you image has an unsupported color model.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文