【问题标题】:Resize without whitespace surrounding on images using graphicsmagick or imagemagick使用 graphicsmagick 或 imagemagick 在图像上调整大小而不用空格包围
【发布时间】:2014-08-09 14:21:32
【问题描述】:

我正在使用 graphicsmagick 将图像调整为缩略图,但它添加了一个白色的周围边框填充。

我使用的命令是:

gm convert matrix.jpg -resize "80x80>" -gravity center -extent 80x80 thumbnail.jpeg

如您所见,图像周围有一些白色填充,但我不希望这样。理想情况下,我希望(整个图像不仅仅是一部分)填充所需的 80x80 输出尺寸。

如何在 imagemagick 或 graphicsmagick 中实现这一点?

【问题讨论】:

  • 整张图片,而不仅仅是其中的一部分您更喜欢改变纵横比?
  • 请在您的问题中添加预期图像的示例。您可以使用 Paint.NET、GIMP 等免费工具。

标签: image image-processing imagemagick graphicsmagick


【解决方案1】:

我将 ImageMagick 与 this image 一起使用。此解决方案需要知道输入图像的大小。

输入

图像水平方向为 145 像素,垂直方向为 200 像素。

裁剪

从图片顶部裁剪:

convert -crop 145x145+0+0 -resize 80x80 matrix.jpg thumbnail.jpeg

我使用145x145 来从原始图像中提取一个正方形。 +0+0 是提取的正方形的偏移量,即左上角。

以图像的中心裁剪:

convert -crop 145x145+0+27 -resize 80x80 matrix.jpg thumbnail.jpeg

垂直偏移设置为27,因为我们必须移除顶部或底部的55 (200 - 145) 像素,因此我们需要移除顶部或底部的27 (55 ÷ 2) 像素和28 像素底部。

裁剪图片底部:

convert -crop 145x145+0+55 -resize 80x80 matrix.jpg thumbnail.jpeg

在不裁剪的情况下调整大小

convert -resize 80x80\! matrix.jpg thumbnail.jpeg

resize 参数之后的 ! flag(按照文档中的建议使用 \! 转义)强制 ImageMagick 忽略纵横比。

【讨论】:

  • 使用convert -resize 80x80! 会压缩它有什么原因吗?有什么办法可以解决吗?与原版的纵横比相比,它肯定被压扁了(高度)。
  • @bob_cobb :如果我使用 GIMP 将图像从 145×200 调整为 80×80,我会得到相同的结果。您无法将矩形图像调整为方形图像而不挤压它。
【解决方案2】:

如果你想保持原来的纵横比,没有图像失真,你可以使用 ImageMagick -trim 选项去除白色填充:

convert "matrix.jpg" -resize "80x80" -gravity center -extent 80x80 -修剪“thumbnail.jpg”

这将生成一个 58x80 的未裁剪图像,其纵横比与原始图像相同。它是 58x80,因为 ImageMagick 使用原始尺寸的较大尺寸来计算比例因子(在本例中为 80/200),并按相同的因子缩放较小的尺寸以保持纵横比。

如果您想要一张正好为 80x80 像素的未裁剪图像,则此宽高比与原始图像不同。输出图像会有失真,@AL 的不裁剪选项调整大小将起作用。

转换 "matrix.jpg" -resize "80x80!" - 重心 - 范围 80x80 “缩略图.jpg”

在 Windows 7 中使用 ImageMagick 6.8.9 进行测试。 @AL 语法可能是 Linux。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-24
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多