使用 Imagemagick 生成缩略图

使用 Imagemagick 生成缩略图

我需要为这样的文件夹中的所有图像生成缩略图(示例)

原始图像:

在此处输入图片描述

我想要的是:

在此处输入图片描述

我已经尝试过这个命令

mogrify *.jpg -gravity center -thumbnail 350x200 *.jpg

我使用此命令得到的结果:

在此处输入图片描述

平台-Windows 7。

答案1

缩略图是图形的较小版本。

您似乎想要的是原始图片的裁剪部分,而不是缩略图。所以您使用了错误的命令。:)

你需要使用调整大小将图像调整为所需的尺寸,然后使用庄稼命令来复制您想要的部分。

答案2

您想要裁剪并调整图像大小:

mogrify -crop 800x520+0+300 -resize 320x200 *.jpg

是的,由于您的图片不同,因此您可能需要调整每张图片的裁剪参数。但是,使用一些脚本,您可以通过编程来调整这些参数,例如,创建cut-resize.sh如下所示的 bash 脚本,并使用文件名参数运行它,因此cut-resize.sh testimage.jpg

#!/bin/bash
origX=`identify $1 | cut -d' ' -f3 | cut -dx -f1`
origY=`identify $1 | cut -d' ' -f3 | cut -dx -f2`
offset=300

eval "mogrify -crop ${origX}x$(($origY/2))+0+$offset -resize 320x200 $1"

将执行几乎相同的操作 - 剪切图像中间的 50%,然后调整大小,适用于任何大小的图像。您可以添加其他参数和变量,以便指定偏移量和要裁剪的数量,但让您的脚本负责设置 imagemagick 的几何形状。

或者在 Windows 上,以下批处理示例可能工作,我不知道,我只有一个Linux机器,但重点是你可以通过脚本调整变量:

file=%1

rem identify %file%  | cut -d' ' -f3 | cut -dx -f1
for /f "tokens=3" %%G IN ('identify %file%') DO set temp=%%G
for /f "tokens=1" "delims=x" %%G IN ("%temp%") DO set oldx=%%G
for /f "tokens=2" "delims=x" %%G IN ("%temp%") DO set oldy=%%G

offset=300
newx=%oldx%
newy=%oldy%/2

mogrify -crop %newx%x%newy%+0+%offset% -resize 320x200 %file%

批处理、bash 或 powershell 脚本的一个很好的参考是http://ss64.com/。一旦您构建了工作流程和脚本,将脚本与 Imagemagick 结合起来将非常强大。

相关内容