Maison > Java > JavaBase > le corps du texte

Comment déterminer si un fichier est une image en Java

Libérer: 2019-12-27 11:37:06
original
8855 Les gens l'ont consulté

Comment déterminer si un fichier est une image en Java

Comment juger si un fichier est une image en Java :

1 En jugeant le nom du suffixe du fichier

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

Ce jugement. est utile Il existe une méthode plus courante, mais cette méthode est très inappropriée. Si quelqu'un modifie légèrement l'extension d'un fichier qui n'est pas une image par l'extension d'une image, cela contournera votre vérification si celui-ci est téléchargé. est shell, PHP ou jsp, alors votre site Web est essentiellement entre les mains de tiers.

2. Déterminez l'en-tête du fichier

Pour les fichiers avec des suffixes inconnus ou des suffixes modifiés, l'en-tête du fichier peut toujours être utilisé pour déterminer de quel type de fichier il s'agit. Nous pouvons utiliser un outil d'édition de texte tel qu'UltraEdit pour ouvrir le fichier (en mode hexadécimal), puis voir quels caractères se trouvent dans l'en-tête du fichier. Voici les caractères d'en-tête de fichier des types d'images courants (hexadécimaux)

JPEG (jpg),文件头:FFD8FF 
PNG (png),文件头:89504E47 
GIF (gif),文件头:47494638 
TIFF (tif),文件头:49492A00 
Windows Bitmap (bmp),文件头:424D
Copier après la connexion
<. 🎜>3. Déterminer par 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");
    }

}
Copier après la connexion

4. Déterminer par ImageIO (le format d'image applicable à cette méthode est bmp/gif/jpg/png)

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

Java Basic tutoriel .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal