Est-il possible de déterminer si un BufferedImage
(lu à partir d'une URL) est une image GIF
? Je veux vérifier le type MIME, pas l'extension de fichier .gif.Java vérifier si BufferedImage est un GIF
Merci
Est-il possible de déterminer si un BufferedImage
(lu à partir d'une URL) est une image GIF
? Je veux vérifier le type MIME, pas l'extension de fichier .gif.Java vérifier si BufferedImage est un GIF
Merci
lire les premiers octets de l'URL, si elle est une image GIF, il devrait commencer par le « mot magique »: GIF89a
Les codes suivants indiquent quel est le format du flux d'images
public static String read(InputStream input) throws IOException {
ImageInputStream stream = ImageIO.createImageInputStream(input);
Iterator iter = ImageIO.getImageReaders(stream);
if (!iter.hasNext()) {
return null;
}
ImageReader reader = (ImageReader) iter.next();
ImageReadParam param = reader.getDefaultReadParam();
reader.setInput(stream, true, true);
BufferedImage bi;
try {
bi = reader.read(0, param);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
reader.dispose();
try {
stream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return reader.getFormatName();
}
public static void main(String[] args) throws MalformedURLException, IOException {
URL url = new URL("http://p1.pstatp.com/large/efa0004d2238045fb9f");
URLConnection connection = url.openConnection();
connection.setConnectTimeout(3000);
connection.setReadTimeout(3000);
InputStream in = null;
try {
in = connection.getInputStream();
String format = read(in);
System.out.print(format);
} catch (Exception e) {
}
}
La sortie est la suivante:
gif
L'ancienne version a 'GIF87a', si je me souviens bien –