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

Как получить информацию об образе (картинке) из командной строки Linux?

Я работаю в веб-приложении, и в настоящее время мигрирую некоторые вещи из старого приложения, но я ненавижу, что мне приходится открывать редактор образов, чтобы получить некоторую информацию об изображениях, которые я мигрирую. Такие вещи, как размеры образов.

Есть ли инструмент командной строки, который я могу использовать для таких задач в Linux?

Ответы (12)

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

Для некоторых форматов изображений можно просто использовать команду file:

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

Не все форматы изображений сообщают размер (особенно JPEG):

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

Для тех, кому нужно использовать что-то более сложное, например:

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

Команда convert является частью пакета ImageMagick.

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

Лучший способ получить эту информацию с помощью команды identify:

$ identify image.png

или только размер атрибутов

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

Это часть ImageMagick, который вы можете установить на Ubuntu так:

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

exiv2 - “инструмент” для получения информации из графических файлов:

~$exiv2 myimage.jpg

выходные данные:

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

mediainfo даст еще более подробную информацию. Обычно она находится в стандартном репозитории под Linux, а также доступна на доморощенном языке на OSX.

Попробуйте, например, запустить в текущей папке:

или

mediainfo *

Обе команды покажут информацию обо всех медиафайлах в текущей папке и вложенных в нее подкаталогах.

Показывать информацию обо всех JPG изображениях, начиная с текущей папки (включая подпапки):

mediainfo .

Это также очень полезно для аудио и видео файлов, в том, что показывает битрейт всех аудио/видео потоков, алгоритм кодирования, тип контейнера, код FOURCC, т.е. XVID, X264, и т.д.

В стандартном репозитории также доступен GUI для всех основных дистрибутивов, обычно называемых mediainfo-gui.

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

Также обратите внимание на ExifTool Фила Харви ; пример:

$ 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

Btw, я искал информацию о dpi/разрешении из командной строки; и интересно, что иногда ни один из этих инструментов не сообщает о том, что на изображении (как в приведенном выше фрагменте); подробнее об этом смотрите в I want to change DPI with Imagemagick without change the actual byte-size of the image data - Super User - однако, кажется, что identify -verbose работает на том же изображении, что и предыдущий фрагмент:

$ 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

. … хотя читать разрешение в единицах PixelsPerInch с помощью identify -verbose может быть немного сложно - смотрите ImageMagick - View topic - Cannot set units to pixelsperinch? .

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

идентифицируется из пакета ImageMagick.

также извлекает информацию exif из jpeg изображения.

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

Вы можете попробовать эту команду, если вышеприведенные ответы не работают:

rdjpgcom -verbose photo.jpg

Он будет показывать информацию, как:

JPEG изображение 564w * 779h, 3 цветовых компонента, 8 бит на образец

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

Я только что обнаружил, что меньше (с lessfile/lesspipe) может на самом деле отображать информацию об изображении с помощью ImageMagick за сценой:

sudo apt-get install imagemagick
less wallpaper.jpg

Выход

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

Другой метод, не опубликованный выше, это использование feh (вам нужно установить его):

feh -l image.jpg

Вывод:

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

Использование:

feh -l *.jpg

Выводит таблицу (как описано выше), но со всей информацией об образах (инкрементирование столбца NUM). Полезно для использования в скриптах.

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

Вы можете использовать:

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

Также вы можете заменить file:// на http://

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

Если вы имеете дело с PNG, возможно, есть атрибуты, которые я нашел трудными для чтения практически с любым программным обеспечением. Для них следует использовать pngmeta:

pngmeta file.png

Это особенно полезно для эскизов, поскольку, согласно стандарту FreeDesktop, PNG должен быть отформатирован и хранить информацию о пути в виде атрибута PNG (Thumb::URI).

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

Инструмент, который вам нужен: file.

Он показывает удивительное количество информации о всевозможных файлах.

Синтаксис:

$ file my_pic.jpg