Skip to content
MagickCmd › ImageMagick identify — 查看图片信息

ImageMagick identify — 查看图片信息

用 ImageMagick identify 读取图片尺寸、格式、色深、EXIF 和页数。含格式字符串占位符和适合写进脚本的一行命令。

identify 只读文件头而不解码整张图,所以对上千个文件批量跑也很便宜。ImageMagick 7 上写作 magick identify,IM6 上直接是 identify

快速摘要

identify photo.jpg
photo.jpg JPEG 1600x900 1600x900+0+0 8-bit sRGB 62790B 0.000u 0:00.000

第二个几何值是画布尺寸 —— 对裁切过的图,它会暴露出那个用 +repage 才能清掉的虚拟画布。

只看你要的字段

identify -format '%f %wx%h %m %b\n' *.jpg

这是写进脚本时该用的形式 —— 一个文件一行,干净,不用解析。

常用占位符

占位符含义
%f文件名
%w / %h宽 / 高(像素)
%m格式(JPEG、PNG……)
%b文件体积
%n帧数或页数
%QJPEG 保存时的质量
%[colorspace]色彩空间
%z位深
%A是否有 alpha 通道
%[EXIF:*]全部 EXIF 标签

不装别的工具直接读 EXIF

identify -format '%[EXIF:*]' photo.jpg
identify -format '%[EXIF:DateTimeOriginal] %[EXIF:Model]\n' photo.jpg

统计 PDF 页数或 GIF 帧数

identify -format '%n\n' document.pdf
identify -format '%n\n' animation.gif

查看全部信息

identify -verbose photo.jpg

输出很长,建议接 grephead。里面包含颜色直方图,在量化之前想知道一张图实际用了多少种颜色时很有用。

反查 JPEG 的保存质量

identify -format '%Q\n' photo.jpg

ImageMagick 是从量化表估算的。用比原始质量更高的数值重新编码不会恢复画质,只会让文件更大。保持相同或略低即可。

找出不符合规则的图片

# 宽度超过 3000 像素的
identify -format '%w %f\n' *.jpg | awk '$1 > 3000 {print $2}'

# 不是 sRGB 的
identify -format '%[colorspace] %f\n' *.jpg | grep -v '^sRGB'

检查文件是不是扩展名声称的那种格式

identify -format '%m %f\n' *.png | grep -v '^PNG'

批量处理之前先跑一下很有用,对用户上传也算一个便宜的初步检查 —— 但它本身不构成安全防护。


相关页面

Copied