ImageMagick - 将图片调整为正方形

18

我刚开始接触ImageMagick。目前我正在尝试将一个几乎是正方形(1411 x 1486)或类似大小的图像转换为正方形,例如1024x1024。不幸的是,调整大小函数似乎不会调整画布大小,因此我一直得到像1024x982这样的数字。我想知道是否有办法使用他们的C++库将非正方形图像转换为正方形图像。

它们不是正方形的原因是因为我将GPS位置转换为UTM并获得了一个正方形,但不幸的是由于地球的曲率,它们通常偏离正方形约400米......如果你想知道的话。

3个回答

20

使用 1024x1024! 不会填充缩略图。

这是您想要的链接 http://www.imagemagick.org/Usage/thumbnails/#pad

链接中的命令行(以防止链接失效):

convert -define jpeg:size=200x200 hatching_orig.jpg -thumbnail '100x100>' \
          -background skyblue -gravity center -extent 100x100 pad_extent.gif

谢谢!这个命令做了我需要的事情:将 original.png 转换为缩略图 '64x64>',并在中心位置添加透明背景,最终大小为 64x64,并保存为 thumbnail.png。 - Eduardo Sztokbant
注意:此解决方案通过在图像周围填充颜色或透明空间来将图像变成正方形。例如,您可以运行以下命令:convert -define png:size=1024x1024 my_image.png -thumbnail '1024x512>' -background transparent -gravity center -extent 1024x1024 my_image_square_padded.png 来创建一个中心区域,大小为1024x512像素,在该中心区域周围填充透明空间。实际上,图像的尺寸将是1024x1024,但只有1024x512的可见部分,因为图像的其余部分只是透明填充。 - GDP2

10
您可以在调整大小或创建显式几何体时,像“1024x1024!”这样为您的几何体添加感叹号。您可能还需要设置宽高比标志,尽管感叹号应该可以完成该操作(我读到有些人需要这样做,但对此没有解释)。

注意:这个解决方案基本上将图像挤压成正方形形状,这对于某些情况可能是可以的,但并不总是适用。 - GDP2

0

我按照Joshua所说的做了。对于一张图片有效。(谢谢Joshua)

我还想添加一个批量调整大小的解决方案,因为...

convert -resize 1024x1024! *.png

没有起作用


这里有一个关于工作样例的命令示例。

mkdir scaled
for %%x in (*.png) do convert -resize 1024x1024! %%x .\scaled\%%x

%%x 是有效的 Bash 语法吗?不应该是 $x 吗?你是否使用相同的输出文件作为输入文件?如果是这样,你应该使用 mogrify 而不是 convert,在这种情况下 convert 的效果不佳... - luca
在Windows中使用%%x是可以的。对于第二个问题,还有另一个问题。你给出的输出文件会成为后续步骤中的输入文件,因此这个过程需要很长时间。相比之下,将它们放入一个文件夹中是一个更好的想法,我现在会编辑答案。 - ufukgun
@luca 如果你想使用bash,你可以执行for x in *.png; do convert -resize '1024x1024!' $x ./scaled/$x; done - v010dya
2
尝试使用mogrify进行批处理而不是convert。 - saurabheights

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接