调整大小不符合分辨率规格

时间:2019-07-12 15:22:27

标签: linux shell graphics imagemagick png

我有一个由16x16图像组成的16x512图像。我想将它们分开,将每个像素分别缩小到16x8,然后将它们全部放回完整的16x512。我有一个基本的主意,但执行时遇到困难。

使用unix stackexchange中的命令,我使用convert -crop 16x16 my_image.png crop-%d.png按文件划分,生成32张图像(512/16 == 32)。我的下一步是麻烦开始了。在askubuntu中,我找到了命令mogrify -resize 16x8 crop-*.png,但这不会产生16x8的图像,而是8x8的图像,我不希望这样。此外,stackoverflow上的这篇文章为我提供了合并这些图像的命令,convert crop-*.png -append my_image_cropped.png,但是它并没有产生我想要的16x512,而是8x256(8是由于先前的错误,但我仍然希望高度为512,而不是256)。

我需要实现什么目标?有问题的图像可以在imgur上找到。

编辑:这是一些描述基本概念的图片

完整图片:

example.png; the full image

16x16和16x8并排

example_resize.png; the 16x16 and 16x8 side-by-side

最终的图像(基本上是16x8)将位于16x16区域(在底部,这是必不可少的),但不会完全填充它。

example_final.png; the finalized image

1 个答案:

答案 0 :(得分:1)

我不确定我知道你想做什么。但是,如果您调整16x8的大小,Imagemagick将保持宽高比。如果要强制将其精确设置为16x8并可以接受失真,请使用!旗。但是,然后您说要将这32个块放回原处以形成16x512,但是由于您拥有32个高度为8的图像,因此调整大小后将使其变为16x256。因此,您必须再次调整大小。如果这确实是您想要的,请按照以下步骤进行操作。

创建用于测试的渐变图像:

convert -size 16x512 gradient: grad.png


enter image description here

进行处理:

convert grad.png -crop 16x16 -resize 16x8! -append -resize 16x512! newgrad.png


enter image description here

请注意,正确的Imagemagick语法会首先读取输入。

添加:

鉴于您在评论中的新信息,请尝试以下操作:

convert grad.png -crop 16x16 -resize 16x8 -gravity northwest -background none -extent 16x16 -append newgrad.png


enter image description here

根据需要更改背景颜色,并根据需要更改重力设置。