我正在 Image Magick 中寻找一个命令来获取任意图像(任何宽高比),并将其嵌入到固定大小的图像中,根据需要增大/缩小源图像以适应。
例如,宽源 Image1 生成以下结果:
高大的源 Image2 生成这个结果:
在每种情况下,最终图像的大小都是固定的,例如 400 x 300 像素。
(稍后将批量使用所需的命令来处理一系列不同初始尺寸的文件。)
与此相关问题相比:当前问题的不同之处在于它需要固定的最终图像大小,以及可能调整源图像的大小(而不是保持源图像不变,并在最后建立给定的纵横比)。
此时我已经查看了大约六个教程站点,但没有找到任何似乎解决这个特定用例的站点。以下是我迄今为止尝试过的示例。
首先,这是对先前批处理文件的修改,以使用变量进行特定的大小调整,但它仍然会产生成比例的输出,而不是固定的输出大小:
REM Fit image for "2 frames + large feature"
set /a fwidth = 870
set /a fheight = 980
setLocal enableDelayedExpansion
for %%a in (*.jpg) do (
set outfile=%%~na-fit
magick "%%a" -set option:wd "%%[fx:(%fwidth%/%fheight%)>(w/h)?(%fwidth%/%fheight%*h):w]" -set option:ht "%%[fx:(%fwidth%/%fheight%)>(w/h)?h:(w/(%fwidth%/%fheight%))]" -gravity center -background black -extent "%%[wd]x%%[ht]" "!outfile!%%~xa"
)
其次,尝试强制特定的输出大小,但它仅用于裁剪原始图像的一部分:
REM Fit image to wide format
REM For 5-frame show, 3:2 ratio
set /a fwidth = 300
set /a fheight = 200
SetLocal EnableDelayedExpansion
for %%a in (*.jpg) do (
set outfile=%%~na-fit
magick "%%a" -set option:wd "%fwidth%" -set option:ht "%fheight%" -gravity center -background black -extent "%%[wd]x%%[ht]" "!outfile!%%~xa"
)
第三,尝试使用“转换”运算符,最初使用固定百分比调整大小,但由于我无法检测到的原因而完全失败:
REM Fit image to wide format
REM For 5-frame show, 3:2 ratio
setLocal enableDelayedExpansion
for %%a in (*.jpg) do (
set outfile=%%~na-fit
magick convert "%%a" -resize 25%% "!outfile!%%~xa"
}
第四,针对固定输出大小对前面的调整进行调整,而不是输出大小,而是将源图像缩小到该大小的子集:
REM Shrink images to 25% via ImageMagick
REM E.g.: convert image.jpg -resize 25% image-small.jpg
SetLocal EnableDelayedExpansion
for %%a in (*.jpg) do (
set outfile=%%~na-shrunk
magick convert "%%a" -resize 300x200 -background black "!outfile!%%~xa"
)
因此,如果有人能指出哪个最接近解决方案并修复它,那将不胜感激。
有更多的时间来处理它,这是一个似乎满足我要求的批处理文件(用适当的帧大小替换常量):
调整图像大小的基于 Linux (bash) 的解决方案:
显着特点:
convert
上是 ImageMagik 命令,