很抱歉,如果我的问题不是一个复杂的难题,但我尝试了很多,并没有达到我的预期:(
如何使用ImageMagic同时实现所有这些目标(win32):
仅在(宽度/高度)大于1000px时调整图像大小(缩放),以使得到的图像的最大宽度/高度为1000px或更小
将任何类型转换为质量为90%的JPG
在图片的右下角放置一个商标(不是必需的,但最好还是这样)
感谢您分享您的知识和经验
答案 0 :(得分:0)
如果对较大的图像进行调整大小操作,我假设您希望保留纵横比。
convert \
input-image \
-resize 1000x1000\> \
-quality 90% \
output.jpg
请不要\>
几何设置的1000x1000
后缀!这是至关重要的。如果你在命令中跳过它,因为你忽略了它,那么命令将无法按预期工作。
此命令应该满足您的前两点。调整大小参数的关键是\>
添加到通常的{width}x{height}
部分。它告诉ImageMagick仅在宽度或高度超过1000像素时调整输入文件的大小。 (\
仅作为转义,以防止shell将>
解释为重定向命令。)
要包含第3点,我可以想象出不同类型的“水印”的 很多 。我在这里只展示一个非常简单的一个:
convert \
input-image \
-resize 1000x1000\> \
-quality 90% \
\
-fill white \
-undercolor '#00000080' \
-gravity southeast \
-annotate +5+5 \
' My Trademark ' \
\
output.jpg
我希望这个例子给你足够的想法,以便继续你自己的实验。
正如Jimmy B.认为我的命令不起作用,让我用一个例子证明我的案例......
for i in 2000x2000 2000x500 500x2000; do
convert -size $i xc:red red-${i}.jpg
done
identify red-*x*.jpg
red-2000x2000.jpg JPEG 2000x2000 2000x2000+0+0 8-bit sRGB 23.7KB 0.000u 0:00.000
red-2000x500.jpg[1] JPEG 2000x500 2000x500+0+0 8-bit sRGB 6.29KB 0.000u 0:00.000
red-500x2000.jpg[2] JPEG 500x2000 500x2000+0+0 8-bit sRGB 6.29KB 0.000u 0:00.000
for img in red-*x*.jpg; do
convert \
${img} \
-resize 1000x1000\> \
-quality 90% \
\
-fill white \
-undercolor '#00000080' \
-gravity southeast \
-annotate +5+5 \
' My Trademark ' \
\
resized-${img}
done
identify resized-red-*x*.jpg
resized-red-2000x2000.jpg JPEG 1000x1000 1000x1000+0+0 8-bit sRGB 7.43KB 0.000u 0:00.000
resized-red-2000x500.jpg[1] JPEG 1000x250 1000x250+0+0 8-bit sRGB 3.31KB 0.000u 0:00.000
resized-red-500x2000.jpg[2] JPEG 250x1000 250x1000+0+0 8-bit sRGB 2.99KB 0.000u 0:00.000