编辑:最终目标是2:1宽高比,无裁剪,最大尺寸为1260x630。如果图片尺寸最初低于1260x630,则应保持在1260x630以下。
苦苦挣扎,这很好(这很可能是我没有找到一个好答案的原因)。
使用ImageMagick我试图将图像调整到1260x630,前提是图像本身大于给定的尺寸(宽度或高度)。
调整大小后,我需要将宽高比更改为2:1,而不会切断图像。使用以下内容,我已经用更大的图像完成了这个:
convert foobar-original.jpg \
-resize 1260x630\> \
-gravity center \
-extent 1260x630 \
foobar.jpg
例如,使用上面的1500x500图片,首先变为1260x420(带有调整大小),然后是1260x630(通过范围),并且额外的宽度用白色背景填充。
然而,如果图像开始较小,例如800x200,则图像不调整大小(如预期的那样),但随后将使其适合完整的1260x630。这不是理想的结果。
我希望-extent
只影响宽高比,根据需要添加白色。因此,不是800x200图像转换为1260x630,而图像的800x200部分位于中心,我希望图像转换为800x400(比例为2:1),额外的高度用白色空间填充。
基本上,我正在寻找一种方法将-extent
设置为宽高比,而不是特定的大小或百分比。像
convert foobar-original.jpg \
-resize 1260x630\> \
-gravity center \
-extent 2:1 \
foobar.jpg
答案 0 :(得分:2)
你正在做的第一次调整大小,
<div class="form-group">
<input type="text" id="to" placeholder="Enter E-mail which you want to verify" onblur="validateEmail(this);" required /><br>
<button id="send_email" style="margin-top:10px;">Send Email</button><br>
<span id="message"></span>
</div>
操作为&#34;调整为1260x630,但仅缩小较大的图片&#34; (通过-resize 1260x630\>
标记)。
您可以申请类似的操作,
>
它的操作为&#34;调整为1260x630,但仅放大较小的图像&#34; (通过-resize 1260x630\<
标记)。
如果将两个操作组合在一个命令中,您应该得到所需的结果:
<
答案 1 :(得分:0)
我遇到类似的问题,最后写了一个批处理脚本:
@echo off
set magick_exe="C:\Programme Portable\ImageMagick-7.0.3-1\magick.exe"
for /R %%f in (*.png) do (
call :body "%%f"
)
pause
goto :eof
:body
set FILE=%1
echo %FILE%
:start
%magick_exe% identify -format "%%[w]" %FILE% > w.txt
%magick_exe% identify -format "%%[h]" %FILE% > h.txt
set /p WIDTH=<w.txt
set /p HEIGHT=<h.txt
set /a HEIGHT2=%HEIGHT%*2
echo "size: " %WIDTH% x %HEIGHT%
if %HEIGHT2% gtr %WIDTH% (
if %HEIGHT% gtr 630 (
echo Resize hight to 630
%magick_exe% convert %FILE% -resize x630 %FILE%
goto :start
)
set /a SIZE_X=%HEIGHT%*2
set /a SIZE_Y=%HEIGHT%
) else (
if %HEIGHT% gtr 1260 (
echo Resize width to 1260
%magick_exe% convert %FILE% -resize 1260 %FILE%
goto :start
)
set /a SIZE_X=%WIDTH%
set /a SIZE_Y=%WIDTH%/2
)
echo "new size :" %SIZE_X% x %SIZE_Y%
if %WIDTH% NEQ %HEIGHT2% ( %magick_exe% convert %FILE% -background white -gravity center -extent "%SIZE_X%x%SIZE_Y%" %FILE% )
echo.
goto :eof