正在查看 11 个帖子:1-11 (共 11 个帖子)
  • 作者
    帖子
  • @42569 回复

    白木
    游客

    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命令的。

    这样,就打开了这个软件的使用大门了。

    实测结果,是可以拼的,但是序号方面,是拼的错乱的。具体怎么拼准确。倒还不清楚。

    总之,这样就解锁这个软件的使用了。但具体命令如何写,有待进一步研究。

    @42575 回复

    白木
    游客

    已经研究成功了。直接可以使用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这样一张完整的图。

     

    这样,这个拼图问题,最后就变成了一个文本操作的问题了。只需要想办法如何提升文字操作的效率就可以了。

    而只要把这些命令搞好以后,实际上只需要复制粘贴一下,拼接速度是非常快的,那么大概就是几分钟搞定。如果配合专门的文本工具的话,效率就更快。下面是以目前现有的文字操作工具来给出,提升效率的方式。

    @42578 回复

    白木
    游客

    这里可以借助书格的工具:网址链接批量生成器

    地址: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等文本编辑器就可以搞定了。

     

    @42580 回复

    白木
    游客

    最后一步,段图拼接成整图的这个过程。

    如果整图的版面特别特别大。可以考虑分步进行。

    比如要把1.jpg 2.jpg一直拼到99.jpg。一次拼接可能死机的话。

    那么就分多次。

    比如第一次拼1.jpg到10.jpg成一个。再拼11.jpg到20.jpg成一个段图,依此类推。

    最后再把这些段图,再可以一次性,或者再分批次去批接。

    原理就是这样,这样可以避开机器配置低的问题。

    最后这步操作,也可以使用老马工具箱的CEP_图像拼接,这个软件,操作。非常快速方便的。

    @42591 回复

    zhudw
    游客

    这个教程好,帮顶一下。ImageMagick是十几二十年的老牌开源软件了。

     

    @42596 回复

    Hardee
    游客

    为什么我按您的提示操作之后,显示的是“magick”不是内部或外部命令,也不是可运行的程序?ImageMagick我已经安装并重启系统了

     

    @42617 回复

    dxx
    游客

    @白木 #42575

    问题是 用扩展下载名画记的碎片的文件名顺序,与拼图位置顺序,不相同,如何拼图?

    @42674 回复

    白木
    游客

    @dxx #42617

    碎片文件能否看看?

    @42687 回复

    dxx
    游客

    @白木 #42674

    修改为用原始文件名下载,顺序好像一致了。

    但大图和小图的碎片,混一起。你看看,是不是_1的是小图碎片,剩下是大图碎片?但2次下载碎片数可能不一样。反正电脑的事,总是存在各种异常。

    谢谢!

    pan.baidu.com/s/1KD...w?pwd=0000

    @42710 回复

    白木
    游客

    @dxx #42687

    文件名顺序,与拼图位置顺序,看上去好像是相同的。

    似乎并没有专门打乱顺序。

    你之前以为不相同,可能是下载碎片图像环节的问题。

    所以如果你下载的碎片文件是齐全的,序号都正确的话。

    应该是可以正常用这套方式拼接出来的。

    问题可能在下载环节,在不是拼图环节。

    @42771 回复

    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 最大

正在查看 11 个帖子:1-11 (共 11 个帖子)
正在查看 11 个帖子:1-11 (共 11 个帖子)

上传图片

拖拽或点击选择图片

回复至:ImageMagick 拼图及切图方法【转载】
您的信息:



初次发帖前:建议先阅读