2011-04-26 09:28:39 +0000 2011-04-26 09:28:39 +0000
264
264

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

Estoy trabajando en una aplicación web, y actualmente estoy migrando algunas cosas de una vieja aplicación, 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 las imágenes.

¿Hay alguna herramienta de línea de comandos que pueda usar para estas tareas en Linux?

Respuestas (12)

270
270
270
2011-04-26 09:40:37 +0000

Para algunos formatos de imagen puedes usar el comando file:

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

No todos los formatos de imagen reportan el tamaño (JPEG más notablemente no lo hace):

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

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

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

El comando convert es parte del paquete ImageMagick.

206
206
206
2011-12-23 14:16:38 +0000

La mejor manera de obtener esta información es usando el comando identify:

$ identify image.png

o sólo atributos de tamaño

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

Es parte de ImageMagick, que puedes instalar en Ubuntu así:

$ sudo apt-get install imagemagick
30
30
30
2013-07-25 01:57:44 +0000

exiv2 es “la herramienta” para obtener información de los archivos de imágenes:

~$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 :
21
21
21
2011-12-23 17:22:07 +0000

(https://mediaarea.net/en/MediaInfo) daría información aún más detallada. Normalmente está en los repositorios estándar de Linux, y también está disponible a través de homebrew en OSX.

Intenta por ejemplo ejecutarse en la carpeta actual:

mediainfo *

o

mediainfo .

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

Muestra información sobre todas las imágenes JPG empezando por la carpeta actual (incluye subcarpetas):

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

También es muy útil con los archivos de audio y vídeo, ya que muestra la tasa de bits de todos los flujos de audio/vídeo, codificando el algoritmo, el tipo de contenedor, el código FOURCC, es decir, XVID, X264, etc.

También hay una GUI disponible en los repositorios estándar para todas las distros principales, normalmente llamada mediainfo-gui

21
21
21
2014-02-13 12:33:36 +0000

Además, echa un vistazo a ExifTool de 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 otra parte, estaba buscando información sobre ppp/resolución desde la línea de comandos; y curiosamente, a veces ninguna de estas herramientas informa que en una imagen (como en el recorte anterior); para más información, mira Quiero cambiar DPI con Imagemagick sin cambiar el tamaño real de los bytes de los datos de la imagen - Super Usuario - sin embargo, identify -verbose parece funcionar para la misma imagen que en el recorte 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 difícil leer la resolución en unidades de PixelsPerInch usando identify -verbose - ver ImageMagick - View topic - Cannot set units to pixelsperinch? .

15
15
15
2012-08-31 08:29:46 +0000
identify -verbose image.png

La identificación es del paquete ImageMagick.

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

7
7
7
2012-10-04 09:53:14 +0000

Puedes 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

6
6
6
2012-12-20 07:26:18 +0000

Acabo de descubrir que menos (con lessfile/lesspipe) puede realmente mostrar la información de la imagen usando ImageMagick detrás de la 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
5
5
5
2013-01-25 04:04:20 +0000

Otro método que no está en la lista anterior, es usar 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

Usando:

feh -l *.jpg

Saldrá una tabla (como la anterior) pero con toda la información de las imágenes (incrementando la columna NUM). Es útil para usar en los scripts.

2
2
2
2013-10-15 18:30:09 +0000

Puedes usar :

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

También puedes reemplazar file:// con http://

2
2
2
2013-12-05 09:07:51 +0000

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

pngmeta file.png

Eso es particularmente útil para las miniaturas, ya que, de acuerdo con el estándar de FreeDesktop, deberían tener formato PNG y almacenar la información de la ruta como un atributo PNG (Thumb::URI).

2
2
2
2011-04-26 09:41:00 +0000

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