【问题标题】:Resizing does not respect resolution specification调整大小不遵守分辨率规范
【发布时间】:2019-11-22 09:27:12
【问题描述】:

我有一张由 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找到。

编辑:这里有一些描述基本想法的图片

全图:

16x16 和 16x8 并排显示

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

【问题讨论】:

    标签: linux shell graphics imagemagick png


    【解决方案1】:

    我不确定我是否了解您想要做什么。但是如果你调整 16x8 的大小,Imagemagick 将保持纵横比。如果你想强制它是 16x8 并且可以接受失真,那么使用 !旗帜。但是你然后说你想把这 32 块放回 16x512 的形式,但是调整大小会使它变成 16x256,因为你有 32 个高度为 8 的图像。所以你必须再次调整大小。如果这确实是您想要的,这里是如何做到这一点的。

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

    convert -size 16x512 gradient: grad.png
    


    进行处理:

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


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

    补充:

    鉴于您评论中的新信息,试试这个:

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


    根据需要更改背景颜色和根据需要更改重力设置以进行定位。

    【讨论】:

    • 快到了。基本上,我不想强​​行拉伸最终图片(就像你对-append -resize 所做的那样,而是我有点想将 16x8 放入 16x16 区域。我会用图表更新我的答案以使其更多清除)
    • 在我的回答中查看我的补充。
    猜你喜欢
    • 2017-12-06
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2022-08-13
    相关资源
    最近更新 更多