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

如何从Linux命令行中获取图像(图片)的信息?

我在做一个Web应用程序,目前正在从一个旧的应用程序中迁移一些东西,但我讨厌我必须打开一个图像编辑器来获取一些关于我正在迁移的图像的信息。

有什么命令行工具可以用在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上也可以通过homebrew来提供。

试试在当前文件夹中运行:

mediainfo *

mediainfo .

这两个命令都会显示当前文件夹和子文件夹中的所有媒体文件的信息。

显示从当前文件夹开始的所有JPG图片信息(包括子文件夹):

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

它对音频和视频文件也非常有用,因为它可以显示所有音频/视频流的比特率、编码算法、容器类型、FOURCC代码,即XVIDX264等。

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

另外,看看ExifTool by Phil Harvey; 一个例子。

$ 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/分辨率的信息;有趣的是,有时这些工具都没有在图像中报告这些信息(就像上面的代码段);更多的信息,请看我想用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

. ….不过,使用identify -verbose读取分辨率单位为PixelsPerInch的单位可能有点麻烦 - 请看 ImageMagick - 查看主题 - Cannot set units to pixelsperinch?.

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

是ImageMagick包中的标识,它还可以从jpeg图片中提取exif信息。

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

我刚刚发现,少少(用file/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