2

http://nichehire.com/Nichehire/upload/img_job_photo_burhan393@gmail.com.jpg

我需要通过给定的 URL 知道图像是否存在。为此,我使用下面的代码。在下面的代码中,如果没有发生错误,我将返回 true,并且如果 URL 不包含图像,则将返回 false。但是上面给出的 URL 不包含图像,即使它返回 true。我的代码有问题吗?

public static boolean exists(String URLName) {
    boolean result = false;
    try {
        InputStream input = (new URL(URLName)).openStream();
        result = true;
    } catch (IOException ex) {
        System.out.println("Image doesnot exits :");
    }   
    return result;
} 
4

4 回答 4

7

..图像是否存在..

ImageIO.read(URL)

这确实是确保

  1. URL 指向某些东西(不返回 HTTP 404)
  2. 服务器允许访问资源(例如不返回 HTTP 500)
  3. URL 末尾的数据实际上代表了一个图像(正如 Java 所理解的那样),而不是重命名为some.gif.
于 2013-03-08T12:02:17.493 回答
4

[已解决] 此源代码运行良好!

String url1 = "https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-xft1/t39.1997-6/p200x200/851575_126362190881911_254357215_n.png";

Image image = ImageIO.read(new URL(url1));
if(image != null){
    System.out.println("IMAGE"); 
}else{
    System.out.println("NOT IMAGE"); 
}
于 2015-06-08T10:57:27.643 回答
2
try
    boolean isImage(String image_path){
    Image image = new ImageIcon(image_path).getImage();
    if(image.getWidth(null) == -1){
         return false;
    }
    else{
         return true;
    }
}

或者

Image Magick 项目具有识别图像的设施,并且有一个名为 JMagick 的 Image Magick 的 Java 包装器,我认为您可能需要考虑而不是重新发明轮子:

我一直在使用 Image Magick,包括它在命令行中的“识别”功能,而且它从来没有失败过一次识别图片。回到我绝对需要该功能并且 JMagick 还不存在的日子里,我曾经使用Runtime.exec()ImageMagick 从 Java 中识别命令并且它运行良好。现在 JMagick 存在,这可能不再需要(但我还没有尝试过 JMagick)。

请注意,它提供的不仅仅是格式,例如:

$  identify tmp3.jpg 
tmp3.jpg JPEG 1680x1050 1680x1050+0+0 DirectClass 8-bit 293.582kb 

$  identify tmp.png
tmp.png PNG 1012x900 1012x900+0+0 DirectClass 8-bit 475.119kb 
于 2013-03-08T11:56:48.217 回答
0

那是因为您假设任何返回的响应都是图像,尽管您的 URL 可能返回任何内容、HTML、JSON .. 任何内容。

于 2013-03-08T11:58:57.920 回答