Pregunta

¿Estoy usando los apis de medios JAI y ImageMagick?

ImageMagick tiene algunos problemas de escalabilidad y el JMagick basado en JNI tampoco es atractivo. JAI tiene resultados de baja calidad al realizar operaciones de cambio de tamaño en comparación con ImageMagick.

¿Alguien sabe de alguna herramienta excelente, ya sea de código abierto o comercial, que sea Java nativo y ofrezca resultados de alta calidad?

¿Fue útil?

Solución

Hay ImageJ , que se jacta de ser

  

la imagen Java pura más rápida del mundo   programa de procesamiento

Se puede utilizar como una biblioteca en otra aplicación. Su arquitectura no es brillante, pero realiza tareas básicas de procesamiento de imágenes.

Otros consejos

Sé que esta pregunta es bastante antigua, pero a medida que sale un nuevo software, ayuda a obtener algunos enlaces nuevos a proyectos que podrían ser interesantes para la gente.

imgscalr está cambiando el tamaño de la imagen de Java pura (y operaciones sencillas como relleno, recorte, rotación, brillo) / dimming, etc.) biblioteca que es muy fácil de usar: una sola clase consta de un conjunto de operaciones gráficas simples, todas definidas como métodos estáticos para pasar una imagen y obtener un resultado.

El ejemplo más básico de usar la biblioteca se vería así:

BufferedImage thumbnail = Scalr.resize(image, 150);

Y un uso más típico para generar miniaturas de imágenes con algunos ajustes de calidad y similares podría tener este aspecto:

import static org.imgscalr.Scalr.*;

public static BufferedImage createThumbnail(BufferedImage img) {
    // Create quickly, then smooth and brighten it.
    img = resize(img, Method.SPEED, 125, OP_ANTIALIAS, OP_BRIGHTER);

    // Let's add a little border before we return result.
    return pad(img, 4);
}

Todas las operaciones de procesamiento de imágenes utilizan el canal Java2D sin procesar (que se acelera por hardware en las plataformas principales) y no presentarán el dolor de llamar a través de JNI como la contención de bibliotecas en su código.

imgscalr también se ha implementado en producciones a gran escala en bastantes lugares: la inclusión de la clase AsyncScalr lo convierte en una opción perfecta para cualquier procesamiento de imágenes del lado del servidor.

Hay muchos ajustes en la calidad de imagen que puedes usar para intercambiar entre velocidad y calidad con el modo ULTRA_QUALITY más alto que proporciona un resultado escalado que se ve mejor que la implementación de Lancoz3 de GIMP.

Otra buena alternativa: Marvin

No soy un chico de Java, pero OpenCV es excelente para mis necesidades. No estoy seguro si encaja con el tuyo. Aquí hay un puerto de Java, creo: http://docs.opencv.org/2.4/doc/ tutorials / introduction / desktop_java / java_dev_intro.html

Procesamiento es nuevo pero muy, muy bueno.

Intente utilizar Framework Catalano .

Puntos clave:

  • Arquitectura como AForge.NET/Accord.NET.
  • Ejecute en ambos entornos con el mismo código, escritorio y Android.
  • Contiene varios filtros en paralelo.
  • El desarrollo está a todo vapor.

El Marco de Catalano es un marco para la computación científica para Java y Android. El proyecto comenzó como un puerto inicial de las muchas características de los marcos de trabajo de AForge.NET y Accord.NET para .NET, pero sigue creciendo con características más avanzadas que ahora se comparten entre esos proyectos.

Ejemplo:

FastBitmap fb = new FastBitmap(bitmap);

Grayscale g = new Grayscale();
g.applyInPlace(fb);

Threshold t = new Threshold(120);
t.applyInPlace(fb);

bitmap = fb.toBitmap();

//Show the result

imo el mejor enfoque es utilizar Sistema de procesamiento de imágenes GraphicsMagick con im4java como una interfaz de línea de comandos para Java.

GraphicsMagick ofrece muchas ventajas, pero una para todos:

  • GM se utiliza para procesar miles de millones de archivos en la foto más grande del mundo sitios (por ejemplo, Flickr y Etsy).

http://im4java.sourceforge.net/ - si está ejecutando Linux forking un nuevo El proceso no es caro.

Para herramientas comerciales, es posible que desee probar Snowbound.

http://www.snowbound.com/

Mi experiencia con ellos es algo anticuada, pero su API de Java Imaging es mucho más fácil de usar que JAI y mucho más rápida.

Su soporte al cliente y ejemplos de código también fueron muy buenos.

RoboRealm vision software lista menciones JHLabs y NeatVision entre muchas otras bibliotecas no basadas en Java.

No puedo decir que sea el " mejor " biblioteca, pero creo que puedes probar esto: http://algart.net/java/AlgART/ Es una biblioteca de código abierto de Java, que admite " smart " matrices y matrices con elementos de diferentes tipos (desde 1 bit hasta punto flotante de 64 bits), incluyendo procesamiento de imágenes en 2D, 3D y multidimensional y otros algoritmos, que trabajan con matrices y matrices. Lamentablemente, en este momento no contiene suficientes demostraciones y ejemplos, pero, por otro lado, contiene muchos JavaDocs. Estuvo en la base del software comercial (SIMAGIS) durante varios años, pero ahora es de código abierto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top