首頁 >Java >Java基礎 >java怎麼判斷文件是否為圖片

java怎麼判斷文件是否為圖片

尚
原創
2019-12-27 11:37:068917瀏覽

java怎麼判斷文件是否為圖片

java判斷檔案是否是圖片的方法:

1、透過判斷檔案後綴名

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

這個判斷是用得比較多的一種方式,不過這種方式非常的不妥,別人稍微的把一個不是圖片的檔案的副檔名修改為圖片的副檔名,就繞開了你的這種校驗,如果這上傳的檔案是shell、PHP或jsp,那你的網站基本上可以說就在別人的手上了。

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn