Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 调整大小不符合分辨率规范_Linux_Shell_Graphics_Imagemagick_Png - Fatal编程技术网

Linux 调整大小不符合分辨率规范

Linux 调整大小不符合分辨率规范,linux,shell,graphics,imagemagick,png,Linux,Shell,Graphics,Imagemagick,Png,我有一个由16x16个图像组成的16x512图像。我想把它们分开,分别缩放到16x8,然后将它们全部放回完整的16x512。我有一个基本的想法,但执行起来有困难 使用中的命令,我通过使用convert-crop 16x16 my_image.png crop-%d.png按文件分割,这将生成32个图像(512/16==32)。我的下一步就是麻烦开始的地方。从中,我找到了命令mogrify-resize16x8 crop-*.png,但是这不会生成16x8图像,而是生成8x8图像,这是我不想要的。

我有一个由16x16个图像组成的16x512图像。我想把它们分开,分别缩放到16x8,然后将它们全部放回完整的16x512。我有一个基本的想法,但执行起来有困难

使用中的命令,我通过使用
convert-crop 16x16 my_image.png crop-%d.png
按文件分割,这将生成32个图像(512/16==32)。我的下一步就是麻烦开始的地方。从中,我找到了命令
mogrify-resize16x8 crop-*.png
,但是这不会生成16x8图像,而是生成8x8图像,这是我不想要的。此外,这篇文章给了我合并这些图像的命令,它是
convert crop-*.png-append my_image\u croped.png
,但是它不会产生我想要的16x512,而是8x256(8是由于之前的错误,但我仍然希望高度为512,而不是256)

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

编辑:以下是一些描述基本想法的图片

完整图像:

16x16和16x8并排

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


我不确定我是否理解你想做什么。但如果调整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区域中。我将用图表更新我的答案,使其更清晰)请参见我的答案中的添加内容。