J'utilise un fichier IO
et je veux savoir s'il existe une méthode pour vérifier si un fichier est une image?
Cela fonctionne assez bien pour moi. J'espère que je pourrais aider
import javax.activation.MimetypesFileTypeMap;
import Java.io.File;
class Untitled {
public static void main(String[] args) {
String filepath = "/the/file/path/image.jpg";
File f = new File(filepath);
String mimetype= new MimetypesFileTypeMap().getContentType(f);
String type = mimetype.split("/")[0];
if(type.equals("image"))
System.out.println("It's an image");
else
System.out.println("It's NOT an image");
}
}
if( ImageIO.read(*here your input stream*) == null)
*IS NOT IMAGE*
Et il y a aussi une réponse: Comment vérifier un fichier téléchargé s'il s'agit d'une image ou d'un autre fichier?
Dans Java 7, il y a la méthode Java.nio.file.Files.probeContentType () . Sous Windows, cela utilise l'extension de fichier et le registre (il ne ne pas sonder le contenu du fichier). Vous pouvez ensuite vérifier la deuxième partie du type MIME et vérifier si elle se présente sous la forme <X>/image
.
Vous pouvez essayer quelque chose comme ceci:
String pathname="abc\xyz.png"
File file=new File(pathname);
String mimetype = Files.probeContentType(file.toPath());
//mimetype should be something like "image/png"
if (mimetype != null && mimetype.split("/")[0].equals("image")) {
System.out.println("it is an image");
}
Vous pouvez essayer quelque chose comme ceci:
import javax.activation.MimetypesFileTypeMap;
File myFile;
String mimeType = new MimetypesFileTypeMap().getContentType( myFile ));
// mimeType should now be something like "image/png"
if(mimeType.substring(0,5).equalsIgnoreCase("image")){
// its an image
}
cela devrait fonctionner, même si cela ne semble pas être la version la plus élégante.
Il existe différentes façons de procéder; voir d'autres réponses et les liens vers des questions connexes. (L'approche Java 7 me semble la plus intéressante, car elle utilise par défaut des conventions spécifiques à la plate-forme et vous pouvez fournir votre propre schéma pour la détermination du type de fichier.)
Cependant, je voudrais juste souligner qu'aucun mécanisme n'est entièrement infaillible:
Les méthodes qui reposent sur le suffixe du fichier seront trompées si le suffixe est non standard ou incorrect.
Les méthodes qui reposent sur des attributs de fichier (par exemple dans le système de fichiers) seront trompées si le fichier a un attribut de type de contenu incorrect ou aucun.
Les méthodes qui reposent sur l'examen de la signature du fichier peuvent être trompées par des fichiers binaires qui se trouvent simplement avoir les mêmes octets de signature.
Même en essayant simplement de lire le fichier sous forme d'image, vous pouvez être trompé si vous n'avez pas de chance ... selon le ou les formats d'image que vous essayez.