Як отримати інформацію про зображення (зображення) з командного рядка Linux?


257

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

Чи є інструмент командного рядка, який я можу використовувати для таких завдань в Linux?

Відповіді:


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.


7
Можливо, я, але, здається, imagemagick насправді завантажує дані зображення, оскільки він працює досить повільно. identifyзамість них слід використовувати imo
jozxyqk

1
о, /dev/nullце аргумент хе-хе
Водолій Сила

FWIW це те, що я використовував, щоб отримати час створення фотографії:identify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg
kralyk

2
Поточна версія програми fileпідтримує відображення розміру JPEG без додаткового параметра: $ file foo.jpgreturn 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

1
Характеристики для рядка формату можна знайти в посібнику GraphicsMagick .
Sjoerd

10
Я додам -verboseпрапор. Мені потрібно було знайти DPI (які є у цій роздільній резолюції)
gc5

для CentOS do: yum install 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, а також доступне через домашню мову на OSX.

Спробуйте, наприклад, запустити в поточній папці:

mediainfo *

або

mediainfo .

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

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

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

Це також дуже корисно з аудіо і відео файлів, в тому , що він показує швидкість передачі всіх аудіо / відео потоків, кодування Algorythm, контейнерного типу, FOURCC коду, тобто XVID, X264і т.д.

Існує також графічний інтерфейс, доступний у стандартних репозиторіях для всіх основних дистрибутивів, які зазвичай називають mediainfo-gui


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


Приємно: identify -verboseце єдиний знайдений мені інструмент, який повідомляє про якість JPG. Наприклад, це скаже Quality: 90.
таніус

15
identify -verbose image.png

ідентифікація відбувається з пакету ImageMagick.

Він також витягує exif інформацію з зображення jpeg.


7

Ви можете спробувати цю команду, якщо відповіді вище не працюють:

rdjpgcom -verbose photo.jpg

Він відображатиме інформацію, наприклад:

Зображення JPEG становить 564 Вт * 779 год, 3 кольорові компоненти, 8 біт на зразок


6

Щойно я виявив, що менше (із меншим файлом / меншим трубопроводом) насправді може відображати інформацію про зображення, використовуючи 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 поза сценою, чи не так?
Тхань ДК

1
Досить тупий спосіб зробити це ... якщо у вас встановлений imageMagick, просто використовуйте команду Identify.
Майк Q

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


2

Ви можете використовувати:

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

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


Piggy backing для цього ви можете зробити те ж саме, але використовуючи аргументи командного рядка, щоб зробити його трохи простішим у використанні. php -r "print_r(getimagesize(\$argv[1]));"
Кевін Шрьодер

2

Якщо ви маєте справу з PNG, можуть бути атрибути, які мені важко читати майже з будь-яким програмним забезпеченням. Для них слід використовувати pngmeta:

pngmeta file.png

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


не повідомляти жодного dpi в ubuntu
typelogic
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.