2012-08-01 10 views
7

En mi última pregunta, le pregunté si había una forma mejor de rotate images de lo que había pensado. Terminé descubriendo jpegtran y desde entonces he encontrado libjpeg-turbo.Cambio de tamaño de las imágenes (jpeg o imagen descomprimida)

Ahora estoy buscando una mejor manera de cambiar el tamaño de las imágenes (jpegs) que imagemagick y graphicsmagick.

¿Existe una herramienta de línea de comandos especializada para cambiar el tamaño de las imágenes de una manera más eficiente que imagemagick o graphicsmagick? Tal vez el cambio de tamaño se puede hacer en la GPU usando opencl o opengl?

El hardware proporcionado es el mismo que en el otro post:

  • Intel Atom D525 (1,8 Ghz)
  • Mobility Radeon HD 5430 Series
  • 4 GB de RAM
  • SSD Vertilidad 3
+0

¿Has probado 'cjpeg' de libjpeg-turbo? Parece que debería tener mejoras de rendimiento similares. En lugar de generar una utilidad de línea de comandos para cada jpeg, también deberías poder mejorar la velocidad al usar directamente la biblioteca libjpeg-turbo. – Stennie

+2

en lugar de establecer algunos requisitos aleatorios (la eficiencia es un elemento tan abstracto), indique qué límite le molesta actualmente y dónde desea obtener. Además, sería bueno saber cuál es el cuello de botella actual * actual * (esto se puede leer, escribir, en-/decodificar o la transformación real). – KillianDS

Respuesta

5

Compruebe hacia fuera este enlace: http://leocharre.com/articles/faster-image-resizing-in-linux/

En particular, el autor menciona que imgresize es más rápido que ImageMagick, y Epeg es extremadamente rápido.

epeg (http://www.systhread.net/texts/200507epeg1.php) parece bastante bien documentado para generar miniaturas. Si la calidad es lo suficientemente buena, esta podría ser la solución.

+1

¡Gracias! Escalar una imagen solía tomar ~ 2 seg (r: 2.000s, u: 5.632s, sys: 0.1s) ahora toma ~ 0.8 seg (r: 0.821, u: 0.756, sys: 0.048s). Eso es menos de la mitad del tiempo :) – Thomaschaaf

3
  • OpenCL es un estándar para la multiplataforma, la programación paralela de los procesadores modernos se encuentran en los ordenadores personales, servidores y dispositivos de mano/incrustado. Es directamente compatible con ATI. Tendrá que obtener AMD APP SDK (formerly known as AMD Stream SDK) para obtener soporte de la GPU (también consulte este getting started guide).

  • Eche un vistazo a Intel's IPP - Integrated Performance Primitives. Es una biblioteca de software de subprocesos múltiples de funciones para aplicaciones de procesamiento de datos y multimedia. Entre otras características, tiene funciones para cambiar el tamaño de las imágenes (bilineal, vecino más cercano, etc.). Desafortunadamente, no es gratis (la versión más barata cuesta $ 199).

  • VIPS es un sistema de procesamiento de imágenes gratuito. Afirma que, en comparación con la mayoría de las bibliotecas de procesamiento de imágenes, VIPS necesita poca memoria y se ejecuta rápidamente, especialmente en máquinas con más de una CPU. Consulte el Speed and Memory Use page para obtener un punto de referencia simple en comparación con otros sistemas similares.

+0

Gracias He comprobado VIPS pero el rendimiento no es bueno: # tiempo gm convertir -size 600x400 a.jpg b.jpg -resize 600x400 0m0.239s reales usuario 0m0.192s sys 0m0.008s # time vips im_resize_linear a.jpg b.jpg 600 400 real 0m0.854s usuario 0m0.692s sys 0m0.100s Esto es en un sistema mucho más rápido. En el átomo, esto toma alrededor de 5 veces más .. – Thomaschaaf

+0

Necesita utilizar vipsth. P.ej. '$ Gm tiempo convertir -tamaño 600 wtc.jpg -resize 600 b.jpg verdadera \t 0m0.271s usuario \t 0m0.368s sys \t 0m0.020s $ vipsthumbnail tiempo wtc.jpg --size 600 --output b .jpg real \t 0m0.270s usuario \t 0m0.272s sys \t 0m0.016s'. Las diferencias son pequeñas con jpeg, ya que puede reducirse tan rápidamente en la carga, pero verá una gran diferencia con los formatos como tif y png. – user894763

-1

Simplemente utilice FFMpeg.exe. Puede redimensionar, convertir, cambiar calidad, etc. Y también funciona con casi todos los tipos conocidos de videos/audios/imágenes. También funciona en Linux/Unix, y hay un código fuente abierto escrito en C++. Puede obtenerlo Here (para Windows/compiled exe) o Here (código fuente y más).
Si está desarrollando un programa, le recomiendo que use la biblioteca estándar de GDIPlus. Hace todo con imágenes.

0

También hay djpeg y cjpeg del Independent JPEG Group que puede cambiar la escala y la imagen a una fracción M/N. No es perfecto, pero muy rápido.

Cuestiones relacionadas