JWL*_*JWL 294 command-line command-line-tool image-processing
我正在开发一个网络应用程序,目前正在从一个旧应用程序迁移一些东西,但我讨厌我必须打开一个图像编辑器来获取有关我正在迁移的图像的一些信息。诸如图像尺寸之类的东西。
在 Linux 中是否有可以用于此类任务的命令行工具?
Maj*_*nko 318
对于某些图像格式,您只需使用以下file命令:
$ file MyPNG.png
MyPNG.png: PNG image, 681 x 345, 8-bit/color RGB, non-interlaced
Run Code Online (Sandbox Code Playgroud)
并非所有图像格式都报告大小(JPEG 最明显的是没有):
$ file MyJpeg.jpg
MyJpeg.jpg: JPEG image data, JFIF standard 1.01
Run Code Online (Sandbox Code Playgroud)
对于那些你将不得不使用更复杂的东西,比如:
$ convert MyJpeg.jpg -print "Size: %wx%h\n" /dev/null
Size: 380x380
Run Code Online (Sandbox Code Playgroud)
该convert命令是 ImageMagick 包的一部分。
Iel*_*ton 235
获取此信息的最佳方法是使用以下identify命令:
$ identify image.png
Run Code Online (Sandbox Code Playgroud)
或只有大小属性
$ identify -format "%wx%h" photo.jpg
Run Code Online (Sandbox Code Playgroud)
它是 ImageMagick 的一部分,您可以像这样在 Ubuntu 上安装它:
$ sudo apt-get install imagemagick
Run Code Online (Sandbox Code Playgroud)
小智 38
exiv2 是从图片文件中获取信息的“工具”:
~$exiv2 myimage.jpg
Run Code Online (Sandbox Code Playgroud)
输出:
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 :
Run Code Online (Sandbox Code Playgroud)
ccp*_*zza 23
mediainfo会提供更详细的信息。它通常在 Linux 上的标准存储库中,也可以通过 OSX 上的自制软件获得。
尝试例如在当前文件夹中运行:
mediainfo *
Run Code Online (Sandbox Code Playgroud)
或者
mediainfo .
Run Code Online (Sandbox Code Playgroud)
这两个命令都将显示当前文件夹和子文件夹中所有媒体文件的信息。
显示从当前文件夹(包括子文件夹)开始的所有 JPG 图像的信息:
find . -iname "*.jpg" -exec mediainfo {} \;
Run Code Online (Sandbox Code Playgroud)
它也与音频和视频文件非常有用,因为它显示了所有的音频/视频流的比特率,编码algorythm,容器类型,FOURCC码,即XVID,X264等等。
对于通常命名的所有主要发行版,标准存储库中还有一个 GUI mediainfo-gui
sda*_*aau 23
另外,请查看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
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我想从命令行获取有关 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
Run Code Online (Sandbox Code Playgroud)
...虽然,使用 PixelsPerInch 单位读取分辨率可能有点棘手identify -verbose- 请参阅ImageMagick • 查看主题 - 无法将单位设置为 pixelperinch?.
小智 17
identify -verbose image.png
Run Code Online (Sandbox Code Playgroud)
标识来自 ImageMagick 包。
它还从 jpeg 图像中提取 exif 信息。
小智 7
如果以上答案不起作用,您可以尝试此命令:
rdjpgcom -verbose photo.jpg
Run Code Online (Sandbox Code Playgroud)
它将显示如下信息:
JPEG 图像为 564w * 779h,3 个颜色分量,每个样本 8 位
我刚刚发现 less(使用 lessfile/lesspipe)实际上可以通过在幕后使用 ImageMagick 来显示图像信息:
sudo apt-get install imagemagick
less wallpaper.jpg
Run Code Online (Sandbox Code Playgroud)
输出
wallpaper.jpg JPEG 1920x1200 1920x1200+0+0 8-bit DirectClass 580KB 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)
上面未发布的其他方法是使用feh(您需要安装它):
feh -l image.jpg
Run Code Online (Sandbox Code Playgroud)
输出:
NUM FORMAT WIDTH HEIGHT PIXELS SIZE(bytes) ALPHA FILENAME
1 jpeg 1280 960 1228800 91319 - image.jpg
Run Code Online (Sandbox Code Playgroud)
使用:
feh -l *.jpg
Run Code Online (Sandbox Code Playgroud)
将输出一个表格(如上),但包含所有图像信息(增加 NUM 列)。在脚本中使用很有用。