Heim > Java > JavaBase > So ermitteln Sie in Java, ob es sich bei einer Datei um ein Bild handelt

So ermitteln Sie in Java, ob es sich bei einer Datei um ein Bild handelt

Freigeben: 2019-12-27 11:37:06
Original
8880 Leute haben es durchsucht

So ermitteln Sie in Java, ob es sich bei einer Datei um ein Bild handelt

So beurteilen Sie, ob eine Datei ein Bild in Java ist:

1. Durch Beurteilung des Dateisuffixnamens

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

Dieses Urteil Es gibt eine gebräuchlichere Methode, aber diese Methode ist sehr ungeeignet. Wenn jemand die Erweiterung einer Datei, die kein Bild ist, geringfügig in die Erweiterung eines Bildes ändert, wird Ihre Überprüfung umgangen Ist Shell, PHP oder JSP, dann kann man grundsätzlich sagen, dass Ihre Website in den Händen anderer ist.

2. Bestimmen Sie den Dateiheader

Bei Dateien mit unbekannten Suffixen oder geänderten Suffixen kann der Dateiheader weiterhin verwendet werden, um zu bestimmen, um welchen Dateityp es sich handelt. Wir können ein Textbearbeitungstool wie UltraEdit verwenden, um die Datei zu öffnen (im Hexadezimalmodus) und dann sehen, welche Zeichen im Dateikopf enthalten sind. Im Folgenden sind die Dateikopfzeichen gängiger Bildtypen (hexadezimal) aufgeführt:

JPEG (jpg),文件头:FFD8FF 
PNG (png),文件头:89504E47 
GIF (gif),文件头:47494638 
TIFF (tif),文件头:49492A00 
Windows Bitmap (bmp),文件头:424D
Nach dem Login kopieren

3. Bestimmen Sie nach 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");
    }

}
Nach dem Login kopieren

4. Bestimmen Sie nach ImageIO (das für diese Methode anwendbare Bildformat ist bmp/gif/jpg/png)

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

Für weitere Java-Kenntnisse zahlen Sie bitte Beachten Sie die Spalte Java Basic Tutorial .

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie in Java, ob es sich bei einer Datei um ein Bild handelt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage