Llevo unos cuatro años ya trabajando en proyectos con Java y nunca había tenido que trabajar con la API de imágenes que Sun proporciona. Bueno, pues ahora estoy embarcado en un pequeño proyecto en el cual había que procesar imágenes. Como siempre me pasa, debido a tiempos, prefiero tirar de google y mirar lo que alguien ha andado y defenderme como buenamente puedo, antes que chaparme la API. Craso error. Después de dar vueltas me bajo un código algo obsoleto, para, un día después descubrir la clase ImageIO, disponible a partir de la versión 1.4, mas potente para estos menesteres.
No es una panacea de clase, pero seguro que ayuda a más de un despistado como yo hace un par de días
-
-
/*
-
* ImageUtils.java
-
*
-
* Created on 20 de julio de 2005, 11:47
-
* Resizes jpeg image files on your file system.
-
* Uses the com.sun.image.codec.jpeg package shipped
-
* by Sun with Java 2 Standard Edition.
-
*
-
* @author Randy Belknap
-
* @revision Alejandro Sánchez Marcos
-
* se aprovecha la nueva clase ImageIO de 1.4
-
* y se añaden algunos métodos nuevos
-
*/
-
-
package com.electroduendes.util.image;
-
-
import java.awt.geom.AffineTransform;
-
import java.awt.image.AffineTransformOp;
-
import java.awt.image.BufferedImage;
-
import java.io.File;
-
import javax.imageio.ImageIO;
-
import org.apache.log4j.Logger;
-
-
/**
-
*/
-
public class ImageUtils {
-
static Logger logger = Logger.getLogger(ImageUtils.class);
-
/*
-
* devuelve la lista de formatos disponibles a leer por ImageIO
-
* @return un array de strings con los mismos.
-
*/
-
return ImageIO.getReaderFormatNames();
-
}
-
-
/*
-
* devuelve una imagen (buffer) en función de la ruta de un archivo
-
* mejoras
-
* @param la ruta del archivo con su nombre
-
* @return BufferedImage la imagen en el buffer
-
*/
-
BufferedImage image = null;
-
try {
-
/*FileInputStream fis = new FileInputStream(fileName);JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(fis);bi = decoder.decodeAsBufferedImage();fis.close();*/
-
// MAS RAPIDO a partir de 1.4
-
}
-
logger.debug("error al intentar leer la imágen");
-
return null;
-
}
-
return image;
-
-
}
-
/**
-
* comprueba que la imágen tiene un mínimo en pixels
-
* width y height tienen que tener un tamaño igual o mayor que el pasado
-
* como argumento
-
*
-
* @param w ancho mínimo
-
* @param h alto mínimo
-
* @return true o false
-
*
-
*/
-
int nHeight = imgSrc.getHeight();
-
int nWidth = imgSrc.getWidth();
-
if ((nHeight<h ) || (nWidth<w)){
-
return false;
-
} else {
-
return true;
-
}
-
}
-
-
/*
-
* calcula el factor de escala mínimo y en base a eso escala la imagen
-
* según el dicho factor.
-
* @param nMaxWidth minimo tamaño para el ancho
-
* @param nMaxHeight minimo tamaño para el alto
-
* @param imgSrc la imágen
-
*/
-
int nHeight = imgSrc.getHeight();
-
int nWidth = imgSrc.getWidth();
-
double scaleX = (double)nMaxWidth / (double)nWidth;
-
double scaleY = (double)nMaxHeight / (double)nHeight;
-
return scale(fScale, imgSrc);
-
}
-
-
/*
-
* escala una imagen en porcentaje.
-
* @param scale ejemplo: scale=0.6 (escala la imágen al 60%)
-
* @param srcImg una imagen BufferedImage
-
* @return un BufferedImage escalado
-
*/
-
if (scale == 1 ) {
-
return srcImg;
-
}
-
-
return op.filter(srcImg, null);
-
-
}
-
-
if (bi != null && str != null) {
-
-
// más rápido con ImageIO
-
try {
-
}
-
}
-
-
-
if(args.length != 3){usage();}
-
-
saveImageToDisk(bImgEscaladaG, args[1],"JPEG");
-
saveImageToDisk(bImgEscaladaP, args[2],"JPEG");
-
}
-
-
public static void usage(){
-
}
-
-
}
1 response so far ↓
1 luis carlos // Jun 29, 2007 at 8:05 am
hola soy luis carlos padilla
Leave a Comment