Obtener los tipos de imágenes que podemos leer o escribir

2099 vistas

La clase ImageIO del package javax.imageio permite obtener esta información. También podemos saber el tipo de imágenes que podemos leer y escribir en función del nombre del formato, del tipo MIME o de la extensión del fichero.

Veamos algún ejemplo:



java
  1. import javax.imageio.*;
  2. public class FormatsImages{
  3.   public static boolean canRead(String format){
  4.     boolean type = ImageIO.getImageReadersByFormatName(format).hasNext();
  5.     boolean mime = ImageIO.getImageReadersByMIMEType(format).hasNext();
  6.     boolean suffix = ImageIO.getImageReadersBySuffix(format).hasNext();
  7.     String infos = "Informaciones lectura "+format+" : ";
  8.     infos+="Format image = "+type+", ";
  9.     infos+="MIME = "+mime+", ";
  10.     infos+="Suffix fichero = "+suffix;
  11.     System.out.println(infos);
  12.     return type||mime||suffix;
  13.   }
  14.  
  15.   public static boolean canWrite(String format){
  16.     boolean type = ImageIO.getImageWritersByFormatName(format).hasNext();
  17.     boolean mime = ImageIO.getImageWritersByMIMEType(format).hasNext();
  18.     boolean suffix = ImageIO.getImageWritersBySuffix(format).hasNext();
  19.     String infos = "Informaciones de escritura "+format+" : ";
  20.     infos+="Format image = "+type+", ";
  21.     infos+="MIME = "+mime+", ";
  22.     infos+="Suffix fichero = "+suffix;
  23.     System.out.println(infos);
  24.     return type||mime||suffix;
  25.   }
  26. }



Podemos usar estos dos métodos estáticos para verificar cualquier formato.



java
  1. canRead("gif");
  2. canRead("jpg");
  3. canRead("bmp");
  4. canRead("image/jpeg");
  5.  
  6. canWrite("gif");
  7. canWrite("jpg");
  8. canWrite("bmp");
  9. canWrite("image/jpeg");



Tenemos acceso a todos los tipos de imágenes que podemos leer o escribir mediante los métodos getReaderFormatNames y getWriterFormatNames. Para los tipo MIME hay los mismos métodos.



java
  1. String[] formatosLectura = ImageIO.getReaderFormatNames(); 
  2. String[] formatosEcritura = ImageIO.getWriterFormatNames();
  3.  
  4. // mostramos los formatos de imagenes
  5. System.out.println("Formatos disponibles de lectura");
  6. for(int i=0;i<formatosLectura.length;i++){
  7.   System.out.println(formatosLectura[i]);
  8. } 
  9.  
  10. System.out.println("Formatos de imagénes de escritura");
  11. for(int i=0;i<formatoEcritura.length;i++){
  12.   System.out.println(formatosEcritura[i]);
  13. }