ホームページ  >  記事  >  Java  >  Javaでファイルが画像かどうかを判断する方法

Javaでファイルが画像かどうかを判断する方法

尚
オリジナル
2019-12-27 11:37:068771ブラウズ

Javaでファイルが画像かどうかを判断する方法

Java でファイルが画像かどうかを判断する方法:

1. ファイルの拡張子名で判断する

String extension = "";
int i = fileName.lastIndexOf('.');
if (i > 0) {
    extension = fileName.substring(i+1);
}
//...
if("jpg".equals(extension)){
    //your code
}

この種類より一般的な方法もありますが、この方法は非常に不適切です。誰かが写真ではないファイルの拡張子を写真の拡張子にわずかに変更すると、認証が回避されます。これがアップロードされている場合ファイルがシェル、PHP、または jsp の場合、Web サイトは基本的に他人の手に渡ります。

2. ファイル ヘッダーを決定する

サフィックスが不明であるか、サフィックスが変更されている場合でも、ファイル ヘッダーを使用してファイルのファイル タイプを決定できます。 UltraEdit などのテキスト編集ツールを使用してファイルを開き (16 進モードで)、ファイル ヘッダーに含まれる文字を確認できます。一般的なイメージ タイプのファイル ヘッダー文字 (16 進数)

JPEG (jpg),文件头:FFD8FF 
PNG (png),文件头:89504E47 
GIF (gif),文件头:47494638 
TIFF (tif),文件头:49492A00 
Windows Bitmap (bmp),文件头:424D
# を次に示します。 ##3、MimetypesFileTypeMap によって決定します

public class ImageCheck {
    private  MimetypesFileTypeMap mtftp;

    public ImageCheck(){
        mtftp = new MimetypesFileTypeMap();
        /* 不添加下面的类型会造成误判 详见:http://stackoverflow.com/questions/4855627/java-mimetypesfiletypemap-always-returning-application-octet-stream-on-android-e*/
        mtftp.addMimeTypes("image png tif jpg jpeg bmp");
    }
    public  boolean isImage(File file){
        String mimetype= mtftp.getContentType(file);
        String type = mimetype.split("/")[0];
        return type.equals("image");
    }

}

4. ImageIO によって決定します (このメソッドに適用可能な画像形式は bmp/gif/jpg/png です)

try {
    // 通过ImageReader来解码这个file并返回一个BufferedImage对象
    // 如果找不到合适的ImageReader则会返回null,我们可以认为这不是图片文件
    // 或者在解析过程中报错,也返回false
    Image image = ImageIO.read(file);
    return image != null;
} catch(IOException ex) {
    return false;
}

Java の知識の詳細については、お支払いください。注意

java基本チュートリアル列。

以上がJavaでファイルが画像かどうかを判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。