刚好在做类似的事情,找了一部分绘本,想将绘本内的图片全部取出来合并。
我是通过nodejs调用gm模块来实现的拼接,命令很简单。
gm(leftFilePath).append(rightFilePath,true).write(collapseFilePath,(err)=>{});
依赖环境
- GraphicsMagick 下载: GraphicsMagick Download
- Node.js 环境安装:Node.js 中文网
两个安装好后,就可以执行代码了。对了,gm安装后要重启下。
将以下代码保存app.js 放在某个文件夹。
const gm = require('gm');
const fs = require('fs');
const path = require('path');
//假定目标目录为以下目录,且文件名称为1.jpg 2.jpg 3.jpg .且没有多级,只有一级,且没有其他多余文件....抱歉,要求有点多。
//如果文件名字不是这样的,那么需要对排序处做下处理。
const folderPath = 'D:\\nodejs\\toy\\ppt转pptx读取\\testcoll';
//该目录为合并后的文件存储目录
const targetFolder = 'D:\\nodejs\\toy\\ppt转pptx读取\\collapse';
function collapse (left,right,target) {
return new Promise((r, j) => {
// gm(left).append(right).write(target, err => {//改行为上下拼接
gm(left).append(right,true).write(target, err => {
r();//忽略报错
})
})
}
(async function () {
let fileList = fs.readdirSync(folderPath);
fileList.sort((a, b) => {
return path.basename(a) - path.basename(b);
})
for (let index in fileList) {
index = parseInt(index, 10);
if (index % 2 == 0) {
//以第一个文件名命名
let targetFilePath = path.join(targetFolder, fileList[index]);
let leftFile = path.join(folderPath, fileList[index]);
let rightFile = path.join(folderPath, fileList[index + 1]);
await collapse(leftFile,rightFile,targetFilePath);
}
}
process.exit(0);
})();
保存代码到文件后,在文件空白处shift+右键打开命令行,安装模块:
npm install gm
然后执行:
node app
等待结果,查看是否正确。