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 の末尾にあるデータは、名前がsome.gif.
于 2013-03-08T12:02:17.493 に答える
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()Java から ImageMagick の識別コマンドを使用していましたが、それは完全に機能しました。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 に答える