¿Hay un comando de shell que devuelve el tamaño de píxel de una imagen?
Estoy tratando de producir un gif animado a partir de diferentes gifs con diferentes tamaños usando convert(por ejemplo convert -delay 50 1.gif 2.gif -loop 0 animated.gif).
El problema es que la conversión simplemente se superpone a las imágenes usando el tamaño de la primera imagen como el tamaño del gif animado, y dado que tienen tamaños diferentes, el resultado es un poco desordenado, con fragmentos de los marcos antiguos que se muestran debajo de los nuevos.

Respuestas:
encontré una solución:
identifyparte del paquete imagemagick, hace exactamente lo que necesitofuente
identify imagename.ico?Like todour.ico[0] ICO 32x32 32x32+0+0 4-bit sRGB 0.000u 0:00.000todour.ico[1] ICO 16x16 16x16+0+0 4-bit sRGB 0.000u 0:00.000todour.ico[2] ICO 48x48 48x48+0+0 8-bit sRGB 0.000u 0:00.000En lugar de analizar la salida
identifypor ojo o por las utilidades de texto, puede usar su-formatopción para generar el ancho y la altura en el formato que más le convenga. Por ejemplo:Puede encontrar una lista de propiedades de imagen que puede generar en esta página , pero para la pregunta aquí, parece que todo lo que necesita son ,
%wy%hque dan el ancho y alto de la imagen, respectivamente, en píxeles.La flexibilidad que me brindó
-formatfue útil para encontrar las imágenes más grandes en términos de píxeles, al generar%[fx:w*h]una cantidad de imágenes y ordenar la salida.Es posible que desee especificar la
-pingopción si está procesando muchas imágenes, utilizando escapes más complicados, y desea asegurarse de que el programa no pierda el tiempo cargando las imágenes completas. Con escapes simples,-pingdebería ser el valor predeterminado. Puede encontrar más información sobre la elección entre-pingy aquí .+pingfuente
simplemente puede usar el comando "archivo" para obtener la información que necesita:
fuente
file taylor-swift-money-makers-990.jpg->taylor-swift-money-makers-990.jpg: JPEG image data, JFIF standard 1.01, comment: "CREATOR: gd-jpeg v1.0 (using IJ"Use
identifypara ver los tamaños:Extraer valor a través
cut | seddel campo 3:Asignar a variable:
fuente
Ambos
displayyfileson bastante lentos, y tienen el potencial de poner de rodillas incluso a sistemas bastante capaces que manejan muchos archivos múltiples. Una pequeña prueba:Al leer solo los bytes necesarios, esta operación se puede acelerar significativamente.
Aquí está pngsize:
Este método es mucho más rápido que usar una biblioteca que carga el PNG hacia adelante, hacia atrás y hacia los lados solo para obtener el tamaño de la imagen: P (Considere el código cuidadosamente antes de alimentarlo en un directorio lleno de PNG arbitrarios, por supuesto).
Los usos de código inet.h para htonl () para de- endian -ize el orden de los bytes de cabecera.
fuente
También puede probar GraphicsMagick , que es una bifurcación bien mantenida de ImageMagick utilizada, por ejemplo, en Flickr y Etsy:
Es más rápido que la identificación de ImageMagick (en mis pruebas aproximadamente dos veces).
fuente
Este fue un fragmento útil (no escribí) que devuelve dimensiones para cada png y jpg en la carpeta:
fuente
Para aquellos como yo que quieren el tamaño en megapíxeles:
fuente