我正在开发一个Web应用程序,目前正在从旧应用程序中迁移某些内容,但是我讨厌必须打开图像编辑器来获取有关要迁移的图像的一些信息。像图像尺寸之类的东西。

在Linux中是否可以使用命令行工具执行此类任务?

#1 楼

对于某些图像格式,您可以只使用file命令: br />
$ file MyPNG.png 
MyPNG.png: PNG image, 681 x 345, 8-bit/color RGB, non-interlaced


对于那些人,您将不得不使用更复杂的东西,例如:

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


convert命令是ImageMagick的一部分包。

评论


可能只是我,但是imagemagick似乎实际上正在那里加载图像数据,因为它运行非常缓慢。 imo标识应改为

– jozxyqk
2014年6月5日在11:23

哦,/ dev / null是一个参数,嘿嘿

–水瓶座力量
2014年12月9日20:31在

FWIW这就是我用来获取照片的创建日期时间的方法:确定-format“%[EXIF:DateTimeOriginal] \ n” foobar.jpg

– kralyk
16年8月13日在22:13

当前版本的文件确实支持不带附加参数的情况下显示JPEG大小:$ file foo.jpg返回foo.jpg:JPEG图像数据,JFIF标准1.01,长宽比,密度72x72,段长16,Exif标准:[TIFF图像数据,big-endian,direntries = 1],基线,精度8、120x120,帧3

–Cœur
16 Dec 23'9:42



#2 楼

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

$ identify image.png


或仅尺寸属性

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


它是ImageMagick的一部分,可以像这样在Ubuntu上安装:

$ sudo apt-get install imagemagick


评论


格式字符串的规范可以在GraphicsMagick手册中找到。

– Sjoerd
13年2月6日在19:19

我将添加-verbose标志。我需要找到DPI(位于“分辨率”字段中)

– gc5
2014年6月11日15:25

对于CentOS,请执行以下操作:yum install ImageMagick

–整洁
2014年9月10日,下午3:34

该答案都适用于jpeg,并提供了安装它所需的信息。

–休·珀金斯(Hugh Perkins)
2015年5月10日下午5:05

@fbrundu DPI与72x72之类的分辨率有何关系

– Seanny123
16年4月5日在15:37

#3 楼

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    :


评论


你知道我什么时候会从“ exiv2”得到这个错误吗?文件1059535097558476208.jpg的打印操作中的Exiv2异常:无法读取输入数据

–莫娜·贾拉勒(Mona Jalal)
20年6月24日在20:59

#4 楼

mediainfo将提供更详细的信息。它通常在Linux上的标准存储库中,也可以在OSX上通过homebrew获得。

例如在当前文件夹中运行:

mediainfo *




mediainfo .


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

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

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


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

#5 楼

另外,请查看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 /分辨率的信息;有趣的是,有时这些工具都没有在图像中报告该情况(如上述代码段所示);有关更多信息,请参见我想使用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•查看主题-无法将单位设置为pixelsperinch ?。

评论


不错:identify -verbose是我发现的唯一报告JPG质量的工具。例如,它将说质量:90。

– Tanius
19年7月12日在23:38

识别-详细报告称“每秒像素数”,以... MB为单位!这让我有些害怕;)。

– Alexey
20 Dec 20'14:52



#6 楼

identify -verbose image.png


identify来自ImageMagick包。

还从jpeg图像中提取exif信息。

#7 楼

如果以上答案无效,您可以尝试以下命令:

rdjpgcom -verbose photo.jpg


它将显示以下信息: ,3个颜色分量,每个样本8位

#8 楼

上面未发布的其他方法,使用的是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列)。在脚本中使用很有用。

#9 楼

我只是发现通过使用ImageMagick在幕后可以实际显示较少的图像(使用lessfile / lesspipe):

sudo apt-get install imagemagick
less wallpaper.jpg


评论


你在开玩笑吗?我尝试了这个,它弹出一个警告,问我是否真的要读取二进制文件,然后它只是显示了一堆二进制文件...(使用Ubuntu 14.04)

–休·珀金斯(Hugh Perkins)
2015年5月10日下午5:04

您需要安装ImageMagick才能运行。我提到它在后台使用ImageMagick,不是吗?

–感谢DK
2015年5月10日下午6:21

相当愚蠢的方式...如果您安装了imageMagick,则只需使用identify命令即可。

– Mike Q
17年3月3日在21:17

安装ImageMagick对输出的影响不大。

–西蒙
20/11/14在13:00

#10 楼

您想要的工具是file

它显示了令人惊讶的各种文件信息。

语法是:

$ file my_pic.jpg

#11 楼

您可以使用:

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


也可以用file://替换http://

评论


小猪为此提供支持,您可以执行相同的操作,但是使用命令行args使其更易于使用。 php -r“ print_r(getimagesize(\ $ argv [1]));”

–凯文·施罗德(Kevin Schroeder)
2014年5月5日20:59



#12 楼

如果您正在处理PNG,则可能发现有些属性很难用几乎所有软件读取。对于这些,应使用pngmeta:


pngmeta file.png


这对于缩略图特别有用,因为根据FreeDesktop标准,格式为PNG,并将路径信息存储为PNG属性(Thumb :: URI)。

评论


不告诉Ubuntu中的任何dpi

–本征场
19-09-27在12:15

#13 楼

如其余答案中所提供的,您可以将identify命令与-verbose标志一起使用。
 identify 


输出:

Format: JPEG (Joint Photographic Experts Group JFIF format)
Geometry: 1000x714+0+0
Colorspace: sRGB
Depth: 8-bit
Channel depth:
  red: 8-bit
  green: 8-bit
  blue: 8-bit
Filesize: 125KB
Number pixels: 714K



json输出(不带-Y标志):

{
  "Format": "JPEG (Joint Photographic Experts Group JFIF format)",
  "Geometry": "1000x714+0+0",
  "Colorspace": "sRGB",
  "Depth": "8-bit",
  "Channel depth": {
    "red": "8-bit",
    "green": "8-bit",
    "blue": "8-bit"
  },
  "Filesize": "125KB",
  "Number pixels": "714K"
}




注意:装有yaml sudo pip install yq # OR pip install --user yq # note: sed is used to remove what breaks yaml format (first line only). identify -verbose image.png | sed 's/^Image:.*/Image:/' \ | yq -Y '.Image|{"Format","Geometry","Colorspace","Depth","Channel depth","Filesize","Number pixels"}' .jpg.png。似乎也不适用于.gif.tif输出是不同的)