¿Cómo obtener información sobre una imagen (imagen) desde la línea de comandos de Linux?

257

Estoy trabajando en una aplicación web y actualmente estoy migrando algunas cosas de una aplicación anterior, pero odio tener que abrir un editor de imágenes para obtener información sobre las imágenes que estoy migrando. Cosas como las dimensiones de la imagen.

¿Existe una herramienta de línea de comandos que pueda usar para tales tareas en Linux?

nemesisfixx
fuente

Respuestas:

263

Para algunos formatos de imagen, puede usar el filecomando:

$ file MyPNG.png 
MyPNG.png: PNG image, 681 x 345, 8-bit/color RGB, non-interlaced

No todos los formatos de imagen informan el tamaño (JPEG no lo hace especialmente):

$ file MyJpeg.jpg 
MyJpeg.jpg: JPEG image data, JFIF standard 1.01

Para aquellos que tendrán que usar algo más elaborado, como:

$ convert MyJpeg.jpg -print "Size: %wx%h\n" /dev/null
Size: 380x380

El convertcomando es parte del paquete ImageMagick.

Majenko
fuente
77
Podría ser yo, pero parece que imagemagick en realidad está cargando datos de la imagen allí, ya que se ejecuta muy lentamente. imo identifydebería usarse en su lugar
jozxyqk
1
oh, /dev/nulles un argumento jeje
Aquarius Power
FWIW esto es lo que solía obtener la fecha y hora de creación de una foto:identify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg
kralyk
2
La versión actual de fileadmite la visualización del tamaño de JPEG sin parámetro adicional: $ file foo.jpgdevoluciones foo.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 72x72, segment length 16, Exif Standard: [TIFF image data, big-endian, direntries=1], baseline, precision 8, 120x120, frames 3
Cœur
199

La mejor manera de obtener esta información es mediante el identifycomando:

$ identify image.png

o solo atributos de tamaño

$ identify -format "%wx%h" photo.jpg

Es parte de ImageMagick, que puede instalar en Ubuntu de la siguiente manera:

$ sudo apt-get install imagemagick
Ielton
fuente
1
Las especificaciones para la cadena de formato se pueden encontrar en el manual GraphicsMagick .
Sjoerd
10
Agregaré la -verbosebandera. Necesitaba encontrar DPI (que están en el campo Resolución)
gc5
para CentOS do: yum install ImageMagick
ordenado el
Esta respuesta funciona con jpegs y proporciona la información necesaria para instalarla.
Hugh Perkins
3
@fbrundu ¿cómo se relaciona DPI con una resolución como72x72
Seanny123 05 de
27

exiv2 es "la herramienta" para obtener información de los archivos de imagen:

~$exiv2 myimage.jpg

salidas:

File name       : myimage.jpg
File size       : 1196944 Bytes
MIME type       : image/jpeg
Image size      : 2592 x 1944
Camera make     : LG Electronics
Camera model    : LG-P970
Image timestamp : 2013:05:19 17:27:06
Image number    : 
Exposure time   : 1/9 s
Aperture        : 
Exposure bias   : 0 EV
Flash           : Yes, compulsory
Flash bias      : 
Focal length    : 3.7 mm
Subject distance: 
ISO speed       : 745
Exposure mode   : 
Metering mode   : Average
Macro mode      : 
Image quality   : 
Exif Resolution : 
White balance   : Auto
Thumbnail       : image/jpeg, 13776 Bytes
Copyright       : 
Exif comment    :
Antonio Molinaro
fuente
21

mediainfo daría información aún más detallada. Generalmente está en los repositorios estándar en Linux, y también está disponible a través de homebrew en OSX.

Intente, por ejemplo, ejecutar en la carpeta actual:

mediainfo *

o

mediainfo .

Ambos comandos mostrarán información sobre todos los archivos multimedia en la carpeta y subcarpetas actuales.

Mostrar información sobre todas las imágenes JPG a partir de la carpeta actual (incluye subcarpetas):

find . -iname "*.jpg" -exec mediainfo {} \;

También es muy útil con archivos de audio y vídeo, en que muestra la tasa de bits de todos los flujos de audio / vídeo, codificación Algorythm, forma de recipiente, de código FOURCC, es decir XVID, X264, etc.

También hay una GUI disponible en repositorios estándar para todas las distribuciones principales que generalmente se llaman mediainfo-gui

ccpizza
fuente
19

Además, echa un vistazo a ExifTool por Phil Harvey ; un ejemplo:

$ exiftool test.png 
ExifTool Version Number         : 8.15
File Name                       : test.png
Directory                       : .
File Size                       : 12 MB
File Modification Date/Time     : 2014:02:13 13:04:52+01:00
File Permissions                : rw-r--r--
File Type                       : PNG
MIME Type                       : image/png
Image Width                     : 2490
Image Height                    : 3424
Bit Depth                       : 8
Color Type                      : RGB
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Significant Bits                : 8 8 8
Image Size                      : 2490x3424

Por cierto, estaba buscando obtener información sobre dpi / resolución desde la línea de comandos; e interesantemente, a veces ninguna de estas herramientas informa eso en una imagen (como en el fragmento anterior); para obtener más información al respecto, consulte Deseo cambiar el DPI con Imagemagick sin cambiar el tamaño de byte real de los datos de la imagen, Super Usuario , sin embargo, identify -verboseparece funcionar para la misma imagen que en el fragmento anterior:

$ identify -verbose test.png 
Image: test.png
  Format: PNG (Portable Network Graphics)
  Class: DirectClass
  Geometry: 2490x3424+0+0
  Resolution: 72x72
  Print size: 34.5833x47.5556
  Units: Undefined
  Type: TrueColor
  Endianess: Undefined
  Colorspace: RGB
  Depth: 8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 8-bit
  Channel statistics:
    Red:
      min: 8 (0.0313725)
      max: 255 (1)
      mean: 237.541 (0.931533)
      standard deviation: 37.2797 (0.146195)
      kurtosis: 21.2876
      skewness: -4.56853
    Green:
      min: 15 (0.0588235)
      max: 255 (1)
      mean: 240.007 (0.941204)
      standard deviation: 37.8264 (0.148339)
      kurtosis: 20.7241
      skewness: -4.51584
    Blue:
      min: 9 (0.0352941)
      max: 255 (1)
      mean: 240.349 (0.942547)
      standard deviation: 38.7118 (0.151811)
      kurtosis: 22.255
      skewness: -4.72275
  Image statistics:
    Overall:
      min: 8 (0.0313725)
      max: 255 (1)
      mean: 179.474 (0.703821)
      standard deviation: 108.711 (0.426316)
      kurtosis: -0.958865
      skewness: -0.995795
  Rendering intent: Undefined
  Interlace: None
  Background color: white
  Border color: rgb(223,223,223)
  Matte color: grey74
  Transparent color: black
  Compose: Over
  Page geometry: 2490x3424+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Zip
  Orientation: Undefined
  Properties:
    date:create: 2014-02-13T13:11:08+01:00
    date:modify: 2014-02-13T13:04:52+01:00
    signature: bada990d3ba29b311501146d9013d67cf36f667c6d39b1f28a72ce913924397d
  Artifacts:
    verbose: true
  Tainted: False
  Filesize: 12.52MB
  Number pixels: 8.526M
  Pixels per second: 7.894M
  User time: 1.080u
  Elapsed time: 0:02.080
  Version: ImageMagick 6.6.2-6 2012-08-17 Q16 http://www.imagemagick.org

... aunque, puede ser un poco complicado leer la resolución en unidades de PixelsPerInch usando identify -verbose- vea ImageMagick • Ver tema - ¿No puede establecer unidades en pixelsperinch? .

sdaau
fuente
Agradable: identify -verbosees la única herramienta que encontré que informa la calidad de JPG. Por ejemplo lo dirá Quality: 90.
Tanius
15
identify -verbose image.png

Identificar es del paquete ImageMagick.

También extrae información exif de la imagen jpeg.

Pierre-Damien
fuente
7

Puede probar este comando si las respuestas anteriores no funcionan:

rdjpgcom -verbose photo.jpg

Mostrará información como:

La imagen JPEG es 564w * 779h, 3 componentes de color, 8 bits por muestra

Scott Chu
fuente
6

Acabo de descubrir que menos (con menos archivo / menos tubo) puede mostrar información de la imagen usando ImageMagick detrás de escena:

sudo apt-get install imagemagick
less wallpaper.jpg

Salida

wallpaper.jpg JPEG 1920x1200 1920x1200+0+0 8-bit DirectClass 580KB 0.000u 0:00.000
Thanh DK
fuente
¿Esto es una broma? Intenté esto, y apareció una advertencia preguntándome si realmente quería leer un archivo binario, y luego solo mostró un montón de binarios ... (usando Ubuntu 14.04)
Hugh Perkins
Necesita instalar ImageMagick para que funcione. Mencioné que usa ImageMagick detrás de escena, ¿no?
Thanh DK
1
Una manera bastante tonta de hacerlo ... si tiene instalado imageMagick, simplemente use el comando de identificación.
Mike Q
4

Otro método no publicado anteriormente, está usando feh (necesita instalarlo):

feh -l image.jpg

Salida:

NUM FORMAT  WIDTH   HEIGHT  PIXELS  SIZE(bytes) ALPHA   FILENAME
1   jpeg    1280    960     1228800 91319       -       image.jpg

Utilizando:

feh -l *.jpg

Producirá una tabla (como arriba) pero con toda la información de las imágenes (incrementando la columna NUM). Útil para usar en scripts.

lepe
fuente
2

La herramienta que quieres es file.

Muestra una sorprendente cantidad de información sobre todo tipo de archivos.

La sintaxis es:

$ file my_pic.jpg

boehj
fuente
2

Puedes usar :

php -r "print_r(getimagesize('file:///archives/Picture/12 farvardin/20120331_013.jpg'));"

También puedes reemplazar file://conhttp://

Golfo pérsico
fuente
Al respaldar esto, puede hacer lo mismo, pero utilizando argumentos de línea de comando para que sea un poco más fácil de usar. php -r "print_r(getimagesize(\$argv[1]));"
Kevin Schroeder
2

Si se trata de PNG, puede haber atributos que me han resultado difíciles de leer con casi cualquier software. Para aquellos, debes usar pngmeta:

pngmeta file.png

Esto es particularmente útil para las miniaturas, ya que, según el estándar FreeDesktop, debe estar formateado en PNG y almacenar la información de ruta como un atributo PNG (Thumb :: URI).

jesjimher
fuente
no dice ningún dpi en ubuntu
typelogic