本文译自:How To View Image Metadata On Linux
译者:EmuLab
原文链接:
原文遵循:[CC BY-NC协议]
图像元数据是一系列关于图像的信息。元数据要么被嵌入到了图像中,要么别存储在一个单独的文件中。总共有三种类型的元数据,它们是:
- 技术性元数据
- 描述性元数据
- 管理性元数据
就如名字所体现的一样,技术性元数据通常包含一个图像的技术性信息,比如相机参数,DPI,快门速度,文件尺寸,图像格式,图像生成日期,生成图像所用的软件等细节。技术性元数据通常由相机设备自动生成。
描述性元数据是摄像者手动添加的数据。所有者可以使用外部软件比如GIMP或者Photoshop来手动地添加它。它包括照片标题、位置、摄像者的名字和评论等信息。描述性数据对于搜索照片非常有用。
管理性数据包含所有这的身份信息和联系信息,许可证,版权和照片的使用规范等。
添加元数据到图像中对于防止内容盗窃、滥用和最终相片的使用是非常重要的。然而,元数据也可以很容易地被剥离掉。希望你能够理解关于图像元数据类型的这些基本知识。
现在,让我们继续前进来看一下如何在Linux命令行中查看图像的信息。

在Linux上查看图像元数据
有许多方法可以实现在Linux上查看一个图像的元数据。这里,我给出了三个命令行工具来查看此类信息。
1. 使用 ImageMagick
ImageMagic有一个命令行工具叫做Identify可以用于获取图像元数据。ImageMagic在大多数Linux发行版的默认软件仓库中都可以获取到。
在Arch Linux及其衍生发行版上,运行下面的命令来安装ImageMagic:
$ sudo pacman -S imagemagick
在 Debian,Ubuntu,Linux Mint上:
$ sudo apt install imagemagick
在 Fedora上:
$ sudo dnf install imagemagick
在 SUSE/openSUSE上:
$ sudo zypper install imagemagick
想在让我们来查看图像元数据。要实现此目的,简单运行:
$ identify -verbose image.png
这个命令将会列出给定图像的元数据的细节输出。
Image: image.png Format: PNG (Portable Network Graphics) Mime type: image/png Class: DirectClass Geometry: 1366x768+0+0 Units: Undefined Type: TrueColor Endianess: Undefined Colorspace: sRGB Depth: 8-bit Channel depth: red: 8-bit green: 8-bit blue: 8-bit Channel statistics: Pixels: 1049088 Red: min: 0 (0) max: 255 (1) mean: 158.62 (0.62204) standard deviation: 36.8176 (0.144383) kurtosis: -0.256842 skewness: -0.00384146 entropy: 0.897097 Green: min: 0 (0) max: 255 (1) mean: 39.1664 (0.153594) standard deviation: 30.5192 (0.119683) kurtosis: 26.7374 skewness: 4.16992 entropy: 0.773393 Blue: min: 0 (0) max: 255 (1) mean: 48.4269 (0.189909) standard deviation: 27.7343 (0.108762) kurtosis: 33.5882 skewness: 4.85108 entropy: 0.741411 Image statistics: Overall: min: 0 (0) max: 255 (1) mean: 82.0712 (0.321848) standard deviation: 31.9173 (0.125166) kurtosis: 35.6513 skewness: 6.83895 entropy: 0.803967 Rendering intent: Perceptual Gamma: 0.454545 Chromaticity: red primary: (0.64,0.33) green primary: (0.3,0.6) blue primary: (0.15,0.06) white point: (0.3127,0.329) Background color: white Border color: srgb(223,223,223) Matte color: grey74 Transparent color: black Interlace: None Intensity: Undefined Compose: Over Page geometry: 1366x768+0+0 Dispose: Undefined Iterations: 0 Compression: Zip Orientation: Undefined Properties: date:create: 2019-08-26T19:25:54+06:00 date:modify: 2019-08-09T13:49:32+05:00 png:IHDR.bit-depth-orig: 8 png:IHDR.bit_depth: 8 png:IHDR.color-type-orig: 2 png:IHDR.color_type: 2 (Truecolor) png:IHDR.interlace_method: 0 (Not interlaced) png:IHDR.width,height: 1366, 768 png:sRGB: intent=0 (Perceptual Intent) signature: 6e35d79e6896e49e6256eadeec46b4f6a4951b13e309a9c89d9235ce51a3b541 Artifacts: filename: image.png verbose: true Tainted: False Filesize: 379KB Number pixels: 1.049M Pixels per second: 26.23MB User time: 0.040u Elapsed time: 0:01.039 Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org
如果你只想要基础信息,只需要移除-verbose选项。
$ identify image.png image.png PNG 1366x768 1366x768+0+0 8-bit sRGB 379KB 0.000u 0:00.000
更多使用方法可以在man page中找到:
$ man identify
2. 使用 file 命令
我们也可以使用file 命令,它被用于确定文件类型,同时也可以查看一个图像的元数据。
$ file image.png image.png: PNG image data, 1366 x 768, 8-bit/color RGB, non-interlaced
file命令没有选项来像identify那样提供更细节的信息。它只能打印出基本的元数据信息。
阅读man page来更多地了解file命令:
$ man file
3. 使用 Exif 工具
Exif 是一个用于显示和改变一个图像的EXIF数据的命令行工具。也许有人想知道Exif是什么,它实际上是每当你使用智能手机或者相机拍摄照片时就会在你的存储中产生的一个JPEG文件。EXIF数据包括日期、相机设置、地理位置、许可证、版权等inxi。Exif在 Debian及其衍生发行版比如Ubuntu的默认仓库中可以获取。
$ sudo apt install exif
要使用exif查看图像元数据,运行:
$ exif image.jpg
Exif将会以一个制表格式产生漂亮的输出。
EXIF tags in 'image.jpg' ('Motorola' byte order):--------------------+----------------------------------------------------------Tag |Value--------------------+----------------------------------------------------------Image Description |Lady Evelyn Falls/Chutes Lady Evelyn, Northwest TerritorieArtist |J. A. KraulisCopyright |J. A. Kraulis/Masterfile (Photographer) - [None] (Editor)XP Title |Lady Evelyn Falls/Chutes Lady Evelyn, Northwest TerritorieXP Author |J. A. KraulisPadding |2060 bytes undefined dataX-Resolution |72Y-Resolution |72Resolution Unit |InchPadding |2060 bytes undefined dataExif Version |Exif Version 2.1FlashPixVersion |FlashPix Version 1.0Color Space |Internal error (unknown value 65535)--------------------+----------------------------------------------------------
Exif不仅可以读取元数据,还可以将EXIF写入图像。要知道更多信息,参见man page。
$ man exif
希望这对你有帮助。
推荐阅读(点击跳转):
如何方便地在Linux上查询硬件信息并生成报告
3个重启Linux系统的命令(以及4个安全实现的方式)
如何轻松地在命令行上同时移动多种类型的文件?
GameHub:将所有的游戏统一到一个屋檐(平台)下
您可能想知道的'top'命令行实用程序的一些替代方案
如何实现更改Linux终端字体的种类和大小
mktemp命令教程,包含初学者示例
Linux中那些我们赖以为生的Bash别名
喜欢使用Linux办公、学习、hack的朋友们可以点击关注小编,小编将竭力提供更多内容给大家交流~