- 作者帖子
白木游客ImageMagick 拼图方法
1. 拼图
montage *.jpg -tile 22x2 -geometry 64x256+0+0 10-.jpg
将目录里的jpg文件按顺序拼成x轴22块,y轴2块的图 ,每个图块的大小为64X512像素,输出文件为10-.jpg
你可以把22*2改成你想要得值,例如你形成的图x轴有50个快,y轴有30个块,你可以写成50x30
把你所有要合成的文件拷在一个目录里,用一个命令就可以合成
合并图片
用法:
convert +append 1.jpg 2.jpg 3.jpg .... 0.jpg
把 1.jpg、2.jpg、3.jpg等多张图片沿“水平方向”( +append)拼成 0.jpg(最后一个文件名是拼出的成品)
convert -append 1.jpg 2.jpg 3.jpg .... 0.jpg
把 1.jpg、2.jpg、3.jpg等多张图片沿“垂直方向”( -append)拼成 0.jpg(最后一个文件名是拼出的成品)
可以分两步,第一步把小图拼成多个水平方向的长条,第二步把长条按垂直方向合并成一个大图。
2.切割图片
切割图片
用法:
convert -crop 128x128 1.jpg 0.jpg
把大图1.jpg按128x128分割成了多张小图0-1.jpg 0-2.jpg ...convert -crop 128x64+6+7 1.jpg 0.jpg
从1.jpg 以座标 6,7 为起点切一片 128x64 的块生成 0.jpg网上能够找到的教程就是这样。但实际操作,还是有一些注意点。这些注意点能够克服,基本上这个软件就可以使用了。
一个要注意的就是,下载安装ImageMagick后,桌面上只有ImageMagick Display这个,打开其实只是一个图片浏览器。真正要使用这个软件的话,是要使用命令行的。因此要打开命令行工具Win+R,然后输入cmd。
然后,把目录切换到要处理的碎片图片文件夹下。比如cd d:\1\
然后,还要注意他这个命令,完整的应该是这样:
magick montage *.jpg -tile 22x2 -geometry 64x256+0+0 10-.jpg
就是,在最前面要加入magick这个,否则是无法运行montage命令的。
这样,就打开了这个软件的使用大门了。
实测结果,是可以拼的,但是序号方面,是拼的错乱的。具体怎么拼准确。倒还不清楚。
总之,这样就解锁这个软件的使用了。但具体命令如何写,有待进一步研究。
白木游客已经研究成功了。直接可以使用ImageMagick来做拼图。并且完全可以根据自己的实际需要去自定义。
原理:应用convert +append 和convert -append这两个横纵向拼图指令。先把纵向(或横向)全部拼成段图,最后再拼一次横向(或纵向)完成全图。
比如从1_1.jpeg一直到31_32.jpeg的拼图任务。
下面给出实际的命令行:
magick convert -append 1_1.jpeg 1_2.jpeg 1_3.jpeg 1_4.jpeg 1_5.jpeg 1_6.jpeg 1_7.jpeg 1_8.jpeg 1_9.jpeg 1_10.jpeg 1_11.jpeg 1_12.jpeg 1_13.jpeg 1_14.jpeg 1_15.jpeg 1_16.jpeg 1_17.jpeg 1_18.jpeg 1_19.jpeg 1_20.jpeg 1_21.jpeg 1_22.jpeg 1_23.jpeg 1_24.jpeg 1_25.jpeg 1_26.jpeg 1_27.jpeg 1_28.jpeg 1_29.jpeg 1_30.jpeg 1_31.jpeg 1_32.jpeg 1.jpg
这段命令表示,把1_1.jpeg 1_2.jpeg一直到1_32.jpeg纵向合并成一个段图,保存为1.jpg,就是段图。
依次,再是
magick convert -append 2_1.jpeg 2_2.jpeg 2_3.jpeg 2_4.jpeg 2_5.jpeg 2_6.jpeg 2_7.jpeg 2_8.jpeg 2_9.jpeg 2_10.jpeg 2_11.jpeg 2_12.jpeg 2_13.jpeg 2_14.jpeg 2_15.jpeg 2_16.jpeg 2_17.jpeg 2_18.jpeg 2_19.jpeg 2_20.jpeg 2_21.jpeg 2_22.jpeg 2_23.jpeg 2_24.jpeg 2_25.jpeg 2_26.jpeg 2_27.jpeg 2_28.jpeg 2_29.jpeg 2_30.jpeg 2_31.jpeg 2_32.jpeg 2.jpg
这段命令表示,把2_1.jpeg 2_2.jpeg一直到2_32.jpeg纵向合并成一个段图,保存为2.jpg,就是段图。
一直这样子,直到最后就是:
magick convert -append 31_1.jpeg 31_2.jpeg 31_3.jpeg 31_4.jpeg 31_5.jpeg 31_6.jpeg 31_7.jpeg 31_8.jpeg 31_9.jpeg 31_10.jpeg 31_11.jpeg 31_12.jpeg 31_13.jpeg 31_14.jpeg 31_15.jpeg 31_16.jpeg 31_17.jpeg 31_18.jpeg 31_19.jpeg 31_20.jpeg 31_21.jpeg 31_22.jpeg 31_23.jpeg 31_24.jpeg 31_25.jpeg 31_26.jpeg 31_27.jpeg 31_28.jpeg 31_29.jpeg 31_30.jpeg 31_31.jpeg 31_32.jpeg 31.jpg
到这步,就出现了31张纵向的段图。
最后把这31张拼在一起。
命令是:
magick convert +append 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 8.jpg 9.jpg 10.jpg 11.jpg 12.jpg 13.jpg 14.jpg 15.jpg 16.jpg 17.jpg 18.jpg 19.jpg 20.jpg 21.jpg 22.jpg 23.jpg 24.jpg 25.jpg 26.jpg 27.jpg 28.jpg 29.jpg 30.jpg 31.jpg ok.jpg
这样,最后就拼成了ok.jpg这样一张完整的图。
这样,这个拼图问题,最后就变成了一个文本操作的问题了。只需要想办法如何提升文字操作的效率就可以了。
而只要把这些命令搞好以后,实际上只需要复制粘贴一下,拼接速度是非常快的,那么大概就是几分钟搞定。如果配合专门的文本工具的话,效率就更快。下面是以目前现有的文字操作工具来给出,提升效率的方式。
白木游客这里可以借助书格的工具:网址链接批量生成器
地址:https://ok.daoing.com/url/
网址这里输入1_(*).jpeg,等差数列,从1至32,公差1。
最后出现的结果如下:
1_1.jpeg
1_2.jpeg
1_3.jpeg
1_4.jpeg
1_5.jpeg
1_6.jpeg
1_7.jpeg
1_8.jpeg
1_9.jpeg
1_10.jpeg
1_11.jpeg
1_12.jpeg
1_13.jpeg
1_14.jpeg
1_15.jpeg
1_16.jpeg
1_17.jpeg
1_18.jpeg
1_19.jpeg
1_20.jpeg
1_21.jpeg
1_22.jpeg
1_23.jpeg
1_24.jpeg
1_25.jpeg
1_26.jpeg
1_27.jpeg
1_28.jpeg
1_29.jpeg
1_30.jpeg
1_31.jpeg
1_32.jpeg复制这一段,到WORD文档里,然后搜索替换,把 ^p 替换为 一个空格。
最后就变成了:
1_1.jpeg 1_2.jpeg 1_3.jpeg 1_4.jpeg 1_5.jpeg 1_6.jpeg 1_7.jpeg 1_8.jpeg 1_9.jpeg 1_10.jpeg 1_11.jpeg 1_12.jpeg 1_13.jpeg 1_14.jpeg 1_15.jpeg 1_16.jpeg 1_17.jpeg 1_18.jpeg 1_19.jpeg 1_20.jpeg 1_21.jpeg 1_22.jpeg 1_23.jpeg 1_24.jpeg 1_25.jpeg 1_26.jpeg 1_27.jpeg 1_28.jpeg 1_29.jpeg 1_30.jpeg 1_31.jpeg 1_32.jpeg
然后前后加上,就可以变成命令了:
前面加上:magick convert -append
后面加上:1.jpg
就形成了最初一段拼接的命令:
magick convert -append 1_1.jpeg 1_2.jpeg 1_3.jpeg 1_4.jpeg 1_5.jpeg 1_6.jpeg 1_7.jpeg 1_8.jpeg 1_9.jpeg 1_10.jpeg 1_11.jpeg 1_12.jpeg 1_13.jpeg 1_14.jpeg 1_15.jpeg 1_16.jpeg 1_17.jpeg 1_18.jpeg 1_19.jpeg 1_20.jpeg 1_21.jpeg 1_22.jpeg 1_23.jpeg 1_24.jpeg 1_25.jpeg 1_26.jpeg 1_27.jpeg 1_28.jpeg 1_29.jpeg 1_30.jpeg 1_31.jpeg 1_32.jpeg 1.jpg
其他的操作,大同小异,依次类推。
核心思路,就是把这样一个拼图问题,变成了一个纯文字问题了。只需要把文字问题解决的效率提高上去,这个拼图问题的效率就自然解决了。
ok.daoing.com/url/ ,这个工具,本来只是用来,批量生成网址的。
如果专门开发一种小工具,专门用来生成拼图的命令行。那么甚至是输入31和32这两个数字,所有命令行就全部出来了。
然后只需要复制粘贴几次,整个拼图就完成了。
如果是开发程序,用于拼图的话,算法原理也可以参考以上内容。
但关键就是,适用范围。具体拼图过程当中,有的比如从0开始,有的从1开始。并且X和Y有的编号方式也可能不一样。
总之,有了Magick这个工具以后,拼图问题,最后只是一个文字问题,熟练使用WORD等文本编辑器就可以搞定了。
白木游客最后一步,段图拼接成整图的这个过程。
如果整图的版面特别特别大。可以考虑分步进行。
比如要把1.jpg 2.jpg一直拼到99.jpg。一次拼接可能死机的话。
那么就分多次。
比如第一次拼1.jpg到10.jpg成一个。再拼11.jpg到20.jpg成一个段图,依此类推。
最后再把这些段图,再可以一次性,或者再分批次去批接。
原理就是这样,这样可以避开机器配置低的问题。
最后这步操作,也可以使用老马工具箱的CEP_图像拼接,这个软件,操作。非常快速方便的。
zhudw游客这个教程好,帮顶一下。ImageMagick是十几二十年的老牌开源软件了。
Hardee游客为什么我按您的提示操作之后,显示的是“magick”不是内部或外部命令,也不是可运行的程序?ImageMagick我已经安装并重启系统了
dxx游客@白木 #42575
问题是 用扩展下载名画记的碎片的文件名顺序,与拼图位置顺序,不相同,如何拼图?
白木游客@dxx #42617
碎片文件能否看看?
dxx游客@白木 #42674
修改为用原始文件名下载,顺序好像一致了。
但大图和小图的碎片,混一起。你看看,是不是_1的是小图碎片,剩下是大图碎片?但2次下载碎片数可能不一样。反正电脑的事,总是存在各种异常。
谢谢!
白木游客@dxx #42687
文件名顺序,与拼图位置顺序,看上去好像是相同的。
似乎并没有专门打乱顺序。
你之前以为不相同,可能是下载碎片图像环节的问题。
所以如果你下载的碎片文件是齐全的,序号都正确的话。
应该是可以正常用这套方式拼接出来的。
问题可能在下载环节,在不是拼图环节。
dxx游客@白木 #42710
名画记某画,下载了碎片,png原始文件名是
……
6_0
6_0 (1)
6_0 (2)
6_1
6_1 (1)
6_1 (2)
6_2
6_2 (1)
6_3
6_3 (1)
6_4
6_4 (1)
6_5
6_5 (1)
6_6
6_6 (1)
6_6 (2)
6_7
6_7 (1)
6_8
6_8 (1)
6_9
6_9 (1)
6_10
6_10 (1)
6_11
6_11 (1)
6_12
6_12 (1)
6_13
6_14
6_15
6_16
6_17
6_18
6_19
6_20
6_21
6_22
6_23
6_24
6_25
6_26……
_前、后的数值恰好都是从0到26,因为是正方形画。
问题是,后面的数值重复时,不是相同画面范围,范围最大的(保留、要拼图)文件名规律如下,也就是优先选(2),其次选(1),请问如何快速删除非最大的文件?
6_5
6_5 (1) 最大
6_6
6_6 (1)
6_6 (2) 最大
6_13 最大
6_14 最大
匿名游客用法:montage -mode concatenate -tile 3x5 *.jpg out.jpg
而且数字都要补0,如8,9,10改为08,09,10
- 作者帖子
正在查看 12 个帖子:1-12 (共 12 个帖子)
正在查看 12 个帖子:1-12 (共 12 个帖子)
正在查看 12 个帖子:1-12 (共 12 个帖子)