如何一键把多张图片批量裁剪、排列、整合成一张图片? 您所在的位置:网站首页 闹鬼图片知乎 如何一键把多张图片批量裁剪、排列、整合成一张图片?

如何一键把多张图片批量裁剪、排列、整合成一张图片?

2023-03-21 14:54| 来源: 网络整理| 查看: 265

很多时候,我们需要把好几张曲线图拼成一副大图,制作出类似于这样的图片:

上面这个图看起来很牛的样子,它是由四张如下这样的小曲线图拼合而成:

这时候,有童鞋举手问了:不好意思打断一下,问下上面这种曲线图是用什么软件画出来的?

这位童鞋,你跑题了哈,画图软件是Origin,是发SCI论文的标配画图软件,具体可以看这里:

你一定要知道的十款主流画图软件,淡定的工作从画出高品格图片开始

那么,现在如果想要把这四个小图拼成一个2*2的阵列怎么办?

这时候,另外一个童鞋抢答了:我知道,可以用Visio软件,把上面四个图片导进去,然后拖动鼠标对齐就可以。

还有第三个童鞋马上接着说:对啊对啊,这问题不难,点点鼠标,体力活而已,小Case了啦。

可是如果图片是这样的呢:

需要手动导入12张图片,然后排列合成。

又比如,如果是这样的呢:

需要手动导入18张图片,然后排列合成。

如果再多点图呢?赶紧在实验室看门大爷锁门之前,跑去旁边卖麻辣烫的小店屯好泡面,准备今天晚上通宵吧少年!

况且,可能还存在另外一个闹心的问题:每张小图片在拼合之前是有白边的。比如下面这个样子:

如果直接把这几个图片手动拼起来,每两个小图之间的距离隔开很远,比较难看,就像下面这样:

因此,在排列图片之前,还需要对每张曲线图先裁剪白边,然后再把裁剪尺寸之后的图片拼起来。

显然,这时采用手动裁剪图片和拼图,是不划算的:

(1) 纯体力劳动,很没有成就感;

(2) 浪费时间,真想快点弄完去刷抖音啊。

有没有什么办法可以一键把多张图片批量裁剪、排列、整合成一张图片?

看来这次是真的要请Matlab出马了。

1. 源代码及解释

废话不多说,先上Matlab代码,不想看代码可以直接跳到下一节使用方法。

clear;

figurestocut=dir('*.bmp'); %读取文件夹里面所有bmp图片

figurenum=size(figurestocut,1); %自动获取图片的总数量

fori=1:figurenum %将所有图片都存到一个四维数组

figures(:,:,:,i)=imread(figurestocut(i).name,'bmp');

end

cut =[100 100 100 100]; 上下左右四边需要切边的尺寸

figures=figures(cut(1)+1:end-cut(2),cut(3)+1:end-cut(4),:,:);%开始裁剪

outfigure=[];

fori=1:figurenum %将裁剪过后的图片重新存在一起

outfigure = [outfigure; figures(:,:,:,i)];

end

image(uint8(outfigure));

axis equal;

axis off;

imwrite(outfigure,'outfigure.bmp','bmp'); %输出图片

大概原理是:每张图片其实是由很多个像素组成,每个像素点是由红色、绿色和蓝色这三种颜色不同比例混合而成。

所以其实每个图片是一个三维数组,三个维度依次存着红色、绿色和蓝色的数值,范围在0~255。

然后这个脚本就是把所有图片先读入到一个数组,裁剪就是提取数组中间的部分,拼合就是把几个图片的数组拼合成一个大数组。

2. 使用方法

使用方法如下:

第一步:把上面这些代码存到一个记事本里,起个好听的名字,比如叫getfigure.m;

第二步:准备好待拼图的N张图片,每张图均需要为bmp格式;

第三步:将上面这些bmp图片和getfigure.m拷到一个文件夹;

第四步:打开getfigure.m,修改需要裁剪白边的尺寸,就是这一行代码:

cut =[100 100 100 100]; 上下左右四边需要切边的尺寸

比如上、下、左、右分别想裁剪150、200、250、300,那就改成

cut =[150 200 250 300]; 上下左右四边需要切边的尺寸

具体需要裁剪多少尺寸,可以测试几次就能得到。

第五步:在matlab主窗口输入getfigure,好了,图片自动裁剪、拼合成功了。

3. 横排竖排

有童鞋看出来了,上面这个代码只能把所有图片横排:

如果想竖排怎么办?

改成

即可。(分号改为逗号就可以竖排了)

如果想把图片排列成2*2或者2*3的阵列怎么办? 先运行横排的程序把四张排成两张,再运行竖排的程序把这两张排成最终的一张即可。

看,只需要15行代码就可以解决熬夜的问题。

已经买好泡面的同学可以回宿舍悠闲地用锅煮着吃了,下次记得多煮点叫我一起!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有