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

blu*_*lue 77 image-manipulation conversion images gif

是否有返回图像像素大小的 shell 命令?

我正在尝试使用convert(例如convert -delay 50 1.gif 2.gif -loop 0 animated.gif)从不同大小的不同 gif 开始生成动画 gif 。

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

blu*_*lue 83

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

$ identify color.jpg 
> color.jpg JPEG 1980x650 1980x650+0+0 8-bit DirectClass 231KB 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)

  • 您能解释一下为什么当我运行“ide​​ntify imagename.ico”时会出现多行吗?`像 todour.ico[0] ICO 32x32 32x32+0+0 4 位 sRGB 0.000u 0:00.000` `todour.ico[1] ICO 16x16 16x16+0+0 4 位 sRGB 0.000u 0:00.000` ` todour.ico[2] ICO 48x48 48x48+0+0 8 位 sRGB 0.000u 0:00.000` (2认同)

Dan*_*etz 75

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

$ identify -format '%w %h' img.png
100 200
$ identify -format '%wx%h' img.png
100x200
Run Code Online (Sandbox Code Playgroud)

您可以在此页面上找到可以输出的图像属性列表,但对于此处的问题,您似乎只需要%wand %h,它们分别以像素为单位给出图像的宽度和高度。


-format通过输出%[fx:w*h]多个图像并对输出进行排序,它提供的灵活性对我在查找像素方面的最大图像方面非常有用。

-ping如果您正在处理许多图像,使用更复杂的转义,并且想要确保程序不会浪费时间加载整个图像,您可能需要指定该选项。使用简单的转义,-ping应该是默认值。有关在-ping和之间进行选择的更多信息,请+ping参见此处


Pas*_*iel 31

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

~# file cha_2.png 
cha_2.png: PNG image data, 656 x 464, 8-bit/color RGB, non-interlaced
Run Code Online (Sandbox Code Playgroud)

  • 事实并非如此,至少在最近的 macOS 版本中是这样。 (2认同)
  • 确认“file”(file 命令的版本 5.04)支持 png 和 jpg。示例:`$ file mlk.jpg`输出`JPEG图像数据,基线,精度8,960x801,分量3` (2认同)

Hug*_*lpz 6

使用identify看大小:

$ identify color.jpg 
> color.jpg JPEG 1980x650 1980x650+0+0 8-bit DirectClass 231KB 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)

通过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
Run Code Online (Sandbox Code Playgroud)

赋值给变量:

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
Run Code Online (Sandbox Code Playgroud)


Jer*_*pas 6

您还可以尝试GraphicsMagick,它是 ImageMagick 的一个维护良好的分支,用于 Flickr 和 Etsy 等:

$ gm identify a.jpg
a.jpg JPEG 480x309+0+0 DirectClass 8-bit 25.2K 0.000u 0:01
Run Code Online (Sandbox Code Playgroud)

它比 ImageMagick 的识别速度快(在我的测试中大约是两倍)。