題 如何從Linux命令行獲取有關圖像(圖片)的信息?


我正在開發一個網絡應用程序,目前正在從一個舊應用程序遷移一些東西,但我討厭我必須打開一個圖像編輯器來獲取有關我正在遷移的圖像的一些信息。像圖像尺寸的東西。

是否有一個命令行工具可用於Linux中的此類任務?


220
2018-04-26 09:28


起源




答案:


對於某些圖像格式,您只需使用 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 command是ImageMagick包的一部分。


217
2018-04-26 09:40



可能只是我,但似乎imagemagick實際上正在加載圖像數據,因為它運行得非常慢。國際海事組織 identify 應該用來代替 - jozxyqk
哦, /dev/null 嘿嘿 - Aquarius Power
FWIW這是我用來獲取照片的創建日期時間: identify -format "%[EXIF:DateTimeOriginal]\n" foobar.jpg - kralyk
當前版本 file 支持在沒有附加參數的情況下顯示JPEG的大小: $ file foo.jpg 回報 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


獲取此信息的最佳方法是使用 identify 命令:

$ identify image.png

或只是大小屬性

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

它是ImageMagick的一部分,你可以在Ubuntu上安裝它,如下所示:

$ sudo apt-get install imagemagick

187
2017-12-23 14:16



格式字符串的規格可以在 GraphicsMagick手冊。 - Sjoerd
我會加上 -verbose 旗。我需要找到DPI(在分辨率字段中) - gc5
對於CentOS做:yum安裝ImageMagick - tidy
這個答案都適用於jpeg,並提供安裝它所需的信息。 - Hugh Perkins
@fbrundu DPI如何與像這樣的分辨率相關 72x72 - Seanny123


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    :

24
2017-07-25 01:57





媒體信息 會給出更詳細的信息。它通常在Linux上的標準存儲庫中,也可以在OSX上通過自製程序獲得。

嘗試在當前文件夾中運行:

mediainfo *

要么

mediainfo .

這兩個命令都將顯示當前文件夾和子文件夾中所有媒體文件的信息。

顯示從當前文件夾開始的所有JPG圖像的信息(包括子文件夾):

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

它對音頻和視頻文件也很有用,因為它顯示所有音頻/視頻流的比特率,編碼algorythm,容器類型,FOURCC代碼,即 XVIDX264

標準回購中還有一個GUI可用於所有通常命名的主要發行版 mediainfo-gui


21
2017-12-23 17:22





identify -verbose image.png

識別來自ImageMagick包。

它還從jpeg圖像中提取exif信息。


14
2017-08-31 08:29





另外,退房 Phil Harvey的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 / resolution的信息;有趣的是,有時這些工具都沒有在圖像中報告(如上面的代碼片段);有關更多信息,請參閱 我想用Imagemagick更改DPI而不改變圖像數據的實際字節大小 - 超級用戶  - 但是, 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?


14
2018-02-13 12:33





如果以上答案不起作用,您可以嘗試此命令:

rdjpgcom -verbose photo.jpg

它將顯示如下信息:

JPEG圖像為564w * 779h,3個顏色分量,每個樣本8位


7
2017-10-04 09:53





我剛剛發現,通過在場景後面使用ImageMagick,較少(使用lessfile / lesspipe)實際上可以顯示圖像信息:

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
2017-12-20 07:26



你在開玩笑嗎?我嘗試了這個,它彈出一個警告,問我是否真的想要讀取二進製文件,然後它只顯示了一堆二進製文件...(使用Ubuntu 14.04) - Hugh Perkins
您需要安裝ImageMagick才能工作。我提到它在幕後使用ImageMagick,不是嗎? - Thanh DK
相當愚蠢的做法...如果你安裝了imageMagick只需使用identify命令。 - Mike Q


上面沒有發布的其他方法是使用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列)。在腳本中使用很有用。


4
2018-01-25 04:04





你想要的工具是 file

它顯示了關於各種文件的驚人數量的信息。

語法是:

$ file my_pic.jpg


2
2018-04-26 09:41