2012-01-21 13 views
11

He buscado y he encontrado algunas bibliotecas de escalado de imágenes para Java. Pero no estoy seguro de con qué ir. Necesito generar miniaturas a partir de la imagen cargada por el servidor.Best Image Scaling Library

Sería genial si puedes decir cuál es bueno y malo.

La lista que tengo es:

  • JMagick
  • im4java
  • Thumbnailator
  • java-imagen-escalamiento
  • JAI

Respuesta

4

En mis proyectos privados, que Don usar cualquier biblioteca específica, la funcionalidad provista para Java da resultados para mi Si solo desea escalar la imagen, entonces una biblioteca de procesamiento de imágenes completa sería demasiado pesada.

Uso los fragmentos de código dados en http://www.mkyong.com/java/how-to-resize-an-image-in-java/ que funcionan bastante bien.

5

Java API para generar miniaturas no es suficiente si necesita miniaturas de alta calidad.

Para generar miniaturas de alta calidad utilice un marco como el que ha enumerado. He intentado ImgScalr (https://github.com/thebuzzmedia/imgscalr) y Thumbnailator. Con mis pruebas de microbenchmark (realmente no se pueden usar para conclusiones de propósito general) Thumbnailator es más rápido, aunque no mucho, y más fácil, especialmente cuando se generan miniaturas con transparencia.

También estoy probando JMagick pero me he encontrado con problemas simplemente compilando el código y configurándolo. También un poco preocupado por encontrarse con problemas después con un marco básico cuyo código está escrito en un idioma que no entiendo en absoluto - C

También puede resultar útil la discusión aquí: How can I resize an image using Java?

5

Por mi necesidades simples, Thumbnailator fue perfecto. Pequeña lib; API fluida, limpia y bien documentada.

En mi caso, era sólo "net.coobird" % "thumbnailator" % "0.4.8" dependencia y:

//.. 
Thumbnails.of(originalFile) 
     .size(300, 300) 
     .toFile(thumbnailFile) 
//.. 

y hecho. Básicamente es un envoltorio amigable sobre las API Java 2D. Útil para necesidades específicas (thumbnailin '); sin curva de aprendizaje


A menos que realmente necesita para hacer un poco de trabajo pesado con imágenes, me guardaría de depender de un binario externo (ImageMagick y envolturas como JMagick), lo que añadiría complejidad y partes móviles en la configuración. Especialmente si tu stack es algo así como el mío: la aplicación Scala/Java se ejecuta en Heroku. Hay cosas como heroku-buildpack-imagemagick-cedar-14, sí, pero una dependencia simple incluida con la aplicación es infinitamente más limpia.