2010-02-21 29 views

Respuesta

6

Hay artículos sobre cómo hacer esto en la red, algo así como estos deben conseguir que va:

+1

en realidad estaba hablando sobre el tamaño del archivo (3mb -> 200 kb), no las dimensiones de la imagen. ¿Los cubre también? – Anand

+0

@Anand ¿Encontraste la solución? –

5

Usted puede' t cambiar fácilmente el tamaño de una imagen de un tamaño de archivo a otro, PERO, la mayoría de JPG/PNG/GIF/etc. tienden a tener tamaños de archivo similares en función de sus resoluciones. Por ejemplo, un JPG comprimido de 200 kb podría tener un tamaño de 1280x960. Si ese es el caso, solo apuntarías todas tus operaciones de cambio de tamaño para ajustar el tamaño de las imágenes objetivo a ese tamaño y obtener aproximadamente la restricción de tamaño que deseas.

Una manera muy fácil de hacer esto es usar java muy simple image resizing library (licencia de Apache 2) que simplemente hace todo bien para usted. Ejemplo de código para cambiar el tamaño sería el siguiente:

BufferedImage img = ImageIO.read(...); // load image 
BufferedImage scaledImg = Scalr.resize(img, 1280, 960); 

Sus proporciones de la imagen son honrados, la biblioteca hace un mejor conjetura en el método que debe utilizar en función de la cantidad de cambio en la imagen debido a la ampliación (el más rápido, BALANCEADO o CALIDAD) y los mejores tipos de imágenes compatibles con Java2D siempre se usan para escalar para evitar el problema de resultados "negros" o resultados realmente terribles (por ejemplo, imágenes GIF excesivamente titiladas).

Además, si desea forzar a la salida el mejor resultado en busca posible en Java, la llamada a la API se vería así:

BufferedImage img = ImageIO.read(...); // load image 
BufferedImage scaledImg = Scalr.resize(img, Method.QUALITY, 1280, 960); 

La biblioteca utilizar el Java2D recomienda escala incremental para el usuario para darle el mejor resultado

Puede leer todos los comentarios en la biblioteca (el código en sí está muy codificado) para ver los diferentes errores de JDK que se trabajan o las optimizaciones que se realizan para mejorar el rendimiento o el uso de la memoria. Pasé MUCHO tiempo ajustando esta implementación y he tenido muchos buenos comentarios de personas que lo implementan en aplicaciones web y otros proyectos de Java.

Cuestiones relacionadas