shell命令获取图像的像素大小

shell命令获取图像的像素大小

是否有一个 shell 命令可以返回图像的像素大小?

convert我正在尝试使用(例如)从不同尺寸的不同 gif 开始制作动画 gif convert -delay 50 1.gif 2.gif -loop 0 animated.gif

问题在于,convert 只是使用第一个图像的大小作为动画 gif 的大小来重叠图像,并且由于它们具有不同的大小,因此结果有点混乱,旧帧的位显示在新帧的下方。

答案1

找到了一个解决方案:identify, imagemagick 包的一部分,正是我需要的

$ identify color.jpg 
> color.jpg JPEG 1980x650 1980x650+0+0 8-bit DirectClass 231KB 0.000u 0:00.000

答案2

您可以使用其选项以最适合您的格式输出宽度和高度,而不是identify通过眼睛或文本实用程序解析输出。-format例如:

$ identify -format '%w %h' img.png
100 200
$ identify -format '%wx%h' img.png
100x200

您可以在以下位置找到可以输出的图像属性列表:这一页,但对于这里的问题,似乎您需要的只是%w%h,它们分别给出图像的宽度和高度(以像素为单位)。


通过输出大量图像并对输出进行排序,所提供的灵活性-format对我找到以像素为单位的最大图像非常有用。%[fx:w*h]

-ping如果您正在处理许多图像,使用更复杂的转义,并且希望确保程序不会浪费时间加载整个图像,您可能需要指定该选项。对于简单的转义,-ping应该是默认的。有关-ping和之间的选择的更多信息+ping可以找到这里

答案3

您可以使用命令“file”来获取您需要的信息:

~# file cha_2.png 
cha_2.png: PNG image data, 656 x 464, 8-bit/color RGB, non-interlaced

答案4

用于identify查看尺寸:

$ identify color.jpg 
> color.jpg JPEG 1980x650 1980x650+0+0 8-bit DirectClass 231KB 0.000u 0:00.000

cut | sed通过, 从字段 3 中提取值:

identify ./color.jpg | cut -f 3 -d " " | sed s/x.*// #width
identify ./color.jpg | cut -f 3 -d " " | sed s/.*x// #height

分配给变量:

W=`identify ./color.jpg | cut -f 3 -d " " | sed s/x.*//` #width
H=`identify ./color.jpg | cut -f 3 -d " " | sed s/.*x//` #height
echo $W
> 1980
echo $H
> 650

相关内容