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

257

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

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

nemesisfixx
источник

Ответы:

263

Для некоторых форматов изображений вы можете просто использовать 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.

Majenko
источник
7
Может быть, только я, но кажется, что imagemagick на самом деле загружает туда данные изображения, поскольку работает довольно медленно. имо identifyследует использовать вместо
jozxyqk
1
о, /dev/nullэто аргумент хе-хе
Водолей Power
FWIW это то, что я использовал, чтобы получить дату создания фото:identify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg
kralyk
2
Текущая версия fileподдерживает отображение размера JPEG без дополнительного параметра: $ file foo.jpgReturns 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

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

$ identify image.png

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

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

Это часть ImageMagick, которую вы можете установить в Ubuntu следующим образом:

$ sudo apt-get install imagemagick
Ielton
источник
1
Спецификации для строки формата можно найти в руководстве GraphicsMagick .
Sjoerd
10
Я добавлю -verboseфлаг. Мне нужно было найти DPI (которые находятся в поле Resolution)
gc5
для CentOS сделать: yum установить ImageMagick
приборка
Этот ответ работает как с jpegs, так и предоставляет информацию, необходимую для его установки.
Хью Перкинс
3
@fbrundu, как DPI относится к такой резолюции, как72x72
Seanny123
27

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

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

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

mediainfo *

или же

mediainfo .

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

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

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

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

Существует также графический интерфейс, доступный в стандартных репозиториях для всех основных дистрибутивов, обычно называемых mediainfo-gui

ccpizza
источник
19

Кроме того, проверьте 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

Кстати, я искал информацию о разрешении / разрешении из командной строки; и что интересно, иногда ни один из этих инструментов не сообщает об этом на изображении (как в приведенном выше фрагменте); подробнее об этом см. « Я хочу изменить DPI с помощью Imagemagick без изменения фактического размера байта данных изображения -« Супер пользователь » - однако, 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 • Просмотр темы - Не удается установить единицы в пиксели? ,

sdaau
источник
Хороший: identify -verboseединственный инструмент, который я нашел, который сообщает о качестве JPG. Например, это скажет Quality: 90.
Танус
15
identify -verbose image.png

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

Он также извлекает информацию EXIF ​​из изображения JPEG.

Пьер-Damien
источник
7

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

rdjpgcom -verbose photo.jpg

Это покажет информацию как:

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

Скотт Чу
источник
6

Я только что обнаружил, что less (с 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
Тхань ДК
источник
Это шутка? Я попробовал это, и выскочило предупреждение, спрашивающее меня, действительно ли я хочу прочитать бинарный файл, а затем он просто отобразил кучу бинарных файлов ... (используя Ubuntu 14.04)
Хью Перкинс
Вам нужно установить ImageMagick для его работы. Я упоминал, что он использует ImageMagick за сценой, не так ли?
Thanh DK
1
Довольно глупый способ сделать это ... если у вас установлен imageMagick, просто используйте команду identifier.
Майк К
4

Другой метод, не опубликованный выше, использует 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

Инструмент, который вы хотите file.

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

Синтаксис:

$ file my_pic.jpg

boehj
источник
2

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

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

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

Персидский залив
источник
Придерживаясь этого, вы можете сделать то же самое, но используя аргументы командной строки, чтобы сделать его немного проще в использовании. php -r "print_r(getimagesize(\$argv[1]));"
Кевин Шредер
2

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

pngmeta file.png

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

jesjimher
источник
не говорит ни одного dpi в Ubuntu
typelogic