之前接一个对图像分辨率做处理的需求,但是判断条件是垂直分辨率和水平分辨率,这两个分辨率的获取,网络上可参考的文章比较少。ImageMagick 这个工具好像服务器都有带安装,可以直接输入identfity -version
看看有没有,没有就安装一下ImageMagick 。
在 ImageMagick 中,identify
是一个命令行工具,用于获取图像文件的信息和属性。通过运行 identify
命令,您可以查看图像文件的各种属性,如尺寸、颜色深度、分辨率、格式等。以下是 identify
命令的一些常用参数和作用:
-
文件路径: 要分析的图像文件的路径。例如:
your_image.jpg
。 -
-verbose: 显示详细的图像信息,包括尺寸、格式、颜色、分辨率等。
-
-format format_string: 以指定格式显示图像信息。
format_string
可以包含特定的占位符,用于将属性值插入字符串中。例如,%w
表示宽度,%h
表示高度。 -
-units type: 指定图像的物理分辨率单位,可以是
Undefined
、PixelsPerInch
或PixelsPerCentimeter
。 -
-density value: 设置图像的分辨率值,以每英寸或每厘米的像素数量为单位。
-
-format "%[property]": 使用
%[property]
占位符获取特定属性的值。例如,%[width]
获取图像的宽度,%[height]
获取图像的高度。 -
-quiet: 以安静模式运行,只输出图像属性信息,不显示额外的信息。
-
-help: 显示关于
identify
命令的帮助信息。
一般jpg,png
格式的图片,使用:idenfity -verbose your.jpg
命令就会显示图片的信息,包含水平分辨和垂直分辨率(Resolution :150 x 150),然后你想具体获取的话,使用idenfity -verbose your.jpg |grep -E Resolution:''
,输出的结果为:
Resolution:150 x 150
如果写到程序中动态获取图片路径的话,就可以直接idenfity -verbose #{pic}|grep Resolution:''
最后通过字符串操作就可以得到你想要的垂直分辨率和水平分辨率(dpi)。
但是由于ImageMagick因为版本的问题,在使用idenfity -verbose
处理gif
类型图像时,会没有Resolution:
这个信息,为了获取gif
类型的dpi,可以使用-format_string
这个参数。我当时获取gif
类型图片使用的命令是:identify -format 'Resolution:%x x %y' your.gif | grep -E 'Resolution':''
,结果为
Resolution:150 x 150
这条命令处理的图片类型很全面,jpg、png都能识别。
以下是identify -format
一些常用的占位符及其对应的属性:
-
%w
:图像的宽度(像素)。 -
%h
:图像的高度(像素)。 -
%f
:图像文件名(不带路径)。 -
%x
:图像的水平分辨率(DPI)。 -
%y
:图像的垂直分辨率(DPI)。 -
%b
:图像文件的字节数(文件大小)。 -
%t
:图像文件的格式(扩展名)。
通过在 -format
参数中使用这些占位符,您可以按照您的需求格式化输出信息。以下是一个示例:
bashCopy code identify -format "Image: %f\nWidth: %w\nHeight: %h\nFormat: %t" your_image.jpg
在上面的示例中,%f
会被替换为图像的文件名,%w
和 %h
会被替换为图像的宽度和高度,%t
会被替换为图像的格式。输出将类似于:
yamlCopy codeImage: your_image.jpg Width: 1024 Height: 768 Format: JPEG
您可以根据需要在 -format
参数中使用多个占位符,来显示图像的不同属性信息。这使您可以更灵活地输出图像的相关信息。
identify -format "Width: %w pixels\nHeight: %h pixels\nAssumed DPI: %x x %y" your_image.gif