2010-11-19 36 views

Répondre

4

lire les premiers octets de l'URL, si elle est une image GIF, il devrait commencer par le « mot magique »: GIF89a

+0

L'ancienne version a 'GIF87a', si je me souviens bien –

3

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