
Обычно, когда мы соединяем изображения, мы обычно используем PS или другие инструменты обработки изображений для их обработки и синтеза. На этот раз возникла необходимость в объединении изображений, и я надеюсь, что мы сможем напрямую использовать код для объединения, поэтому такой инструмент существует. Сумка.
. С помощью этого плагина мы можем выполнять следующие операции над изображениями:
следующим образом. У нас есть такие две картинки, и теперь мы можем использовать этот инструмент, чтобы соединить их в одну.

n1.jpg

n2.jpg
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = новый ImgConcat();
константа р1 = {
слева:'.\img\n1.jpg',
справа:'.\img\n2.jpg',
цель:'.\longImg'
}
// Соединяем два изображения по горизонтали ImgConcatClass.collapseHorizontal(p1).then(res=>{
console.log(`Сращивание завершено, путь к изображению — ${res}`);
}); 
по-прежнему аналогично двум изображениям выше. Мы соединим их вертикально с помощью
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = новый ImgConcat();
константа р1 = {
слева:'.\img\n1.jpg',
справа:'.\img\n2.jpg',
цель:'.\longImg'
}
//Объединяем два изображения по вертикали ImgConcatClass.collapseVertical(p1).then(res=>{
console.log(`Сращивание завершено, путь к изображению — ${res}`);
}); 
Мы также можем напрямую объединить все изображения в каталоге в длинное изображение, как показано ниже. Теперь мы хотим объединить все изображения в каталоге:

const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = новый ImgConcat();
константа р = {
folderPath:'.\img', //Каталог ресурсов targetFolder:'.\longImg', //Направление каталога хранения преобразованных изображений:'y' //Направление склейки, y — горизонтально, n — вертикально}
// Объединяем все изображения в каталоге ImgConcatClass.concatAll(p).then(res=>{
console.log(`Сращивание завершено, путь к изображению — ${res}`);
}) 
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = новый ImgConcat();
константа р = {
folderPath:'.\img', //Каталог ресурсов targetFolder:'.\longImg', //Направление каталога хранения преобразованных изображений:'n' //Направление склейки, y — горизонтально, n — вертикально}
// Объединяем все изображения в каталоге ImgConcatClass.concatAll(p).then(res=>{
console.log(`Сращивание завершено, путь к изображению — ${res}`);
}) 
Мы также можем самостоятельно определить матрицу склейки изображений. shape представляет собой двумерный массив и определяет изображения в каждой позиции. Подробности следующие:
const consoleInput = require('@jyeontu/img). -конкат');
const ImgConcatClass = новый ImgConcat();
константа р = {
shape:[['.\img\n1.jpg','.\img\white.jpg','.\img\n2.jpg'],
['.\img\white.jpg','.\img\n3.jpg','.\img\white.jpg'],
['.\img\n4.jpg','.\img\white.jpg','.\img\n5.jpg']
],
цель:'.\longImg'
};
//Настраиваемое изображение сращивания матрицы ImgConcatClass.conCatByMaxit(p).then(res=>{
console.log(`Сращивание завершено, путь к изображению — ${res}`);
}); 
и использует GraphicsMagick для склейки изображений
const gm = require('gm');
свернуть (слева, справа, цель, флаг = истина) {
вернуть новое обещание((r) => {
gm(left).append(right,flag).write(target, err => {
если(ошибка) console.log(ошибка);
р();
})
})
} Используйте Sharp.js, чтобы получить информацию об изображении . гм = требуется ('гм');
const fs = require('fs');
константный путь = требуется ('путь');
const ProgressBar = require('@jyeontu/progress-bar');
const {getFileSuffix, getMetadata, resizeImage} = require('./util');
doConcatAll = async(folderPath,targetFolder,direction) => {
пусть fileList = fs.readdirSync(folderPath);
fileList.sort((a, b) => {
return path.basename(a) - path.basename(b);
});
const ExtensionName = getFileSuffix(fileList[0], ".");
пусть targetFilePath = path.join(targetFolder, new Date().getTime() + '.' + ExtensionName);
константный барConfig = {
продолжительность: fileList.length - 1,
ток: 0,
блок:'█',
шоуномер: правда,
кончик:{
0: «Сращивание...»,
100: «Сращивание завершено»
},
цвет:'зеленый'
};
пусть ProgressBarC = новый ProgressBar (barConfig);
const imgInfo = await this.getImgInfo(path.join(folderPath, fileList[0]));
for (let index = 1; index <fileList.length; index++) {
пусть leftFile = path.join(folderPath, fileList[index - 1]);
пусть rightFile = path.join(folderPath, fileList[index]);
const leftPath = ожидайте this.resizeImage({
путь: левый файл,
ширина: imgInfo.ширина,
высота: imgInfo.height
});
const rightPath = ожидайте this.resizeImage({
путь: правый файл,
ширина: imgInfo.ширина,
высота: imgInfo.height
});
ProgressBarC.run (индекс);
await this.collapse(index == 1? leftPath: targetFilePath, rightPath, targetFilePath, направление);
fs.unlinkSync(leftPath);
fs.unlinkSync(rightPath);
}
console.log('');
вернуть путь к целевому файлу;
} const gm = require('gm');
const fs = require('fs');
константный путь = требуется ('путь');
const ProgressBar = require('@jyeontu/progress-bar');
const {getFileSuffix, getMetadata, resizeImage} = require('./util');
асинхронный conCatByMaxit (рез) {
константа {форма} = рез;
константный tmpList = [];
константный барConfig = {
продолжительность: форма[0].длина * форма.длина,
ток: 0,
блок:'█',
шоуномер: правда,
кончик:{
0: «Сращивание...»,
100: «Сращивание завершено»
},
цвет:'зеленый'
};
const ProgressBarC = новый ProgressBar (barConfig);
пусть цель = '';
let ExtensionName = getFileSuffix(shape[0][0], ".");
const imgInfo = ожидайте this.getImgInfo(shape[0][0]);
for(let i = 0; i < shape.length; i++){
target = res.target + '\' + `targetImg${i}.${extensionName}`;
for(let j = 1; j < shape[i].length; j++){
const leftPath = ожидайте this.resizeImage({
путь: форма[i][j - 1],
ширина: imgInfo.ширина,
высота: imgInfo.height
});
const rightPath = ожидайте изменения размера изображения({
путь: форма[i][j],
ширина: imgInfo.ширина,
высота: imgInfo.height
});
tmpList.push(leftPath, rightPath, цель);
ProgressBarC.run(shape[i].length * i + j);
await this.collapse(j == 1 ? leftPath: target,rightPath,target);
}
если (я>0){
await this.collapse(res.target + '\' + `targetImg${i - 1}.${extensionName}`,target,target,false);
}
}
ProgressBarC.run(shape[0].length * shape.length);
const newTarget = res.target + '\' + new Date().getTime() + `.${extensionName}`;
fs.renameSync(цель,newTarget)
for(пусть я = 0; я <tmpList.length; я++){
пытаться{
fs.unlinkSync(tmpList[i]);
}поймать(ошибка){
// console.error(err);
}
}
console.log('');
вернуть новую цель;
} const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat(); левый путь к изображению
правый целевой путь к изображению
сохранения синтетических изображений
const p1 = {
слева:'.\img\n1.jpg',
справа:'.\img\n2.jpg',
цель:'.\longImg'
}
// Соединяем два изображения по горизонтали ImgConcatClass.collapseHorizontal(p1).then(res=>{
console.log(`Сращивание завершено, путь к изображению — ${res}`);
левый путь к изображению
правый путь к изображению
сохранения синтезированного изображения
const p1 = { });
слева:'.\img\n1.jpg',
справа:'.\img\n2.jpg',
цель:'.\longImg'
}
// Соединяем два изображения по вертикали ImgConcatClass.collapseVertical(p1).then(res=>{
console.log(`Сращивание завершено, путь к изображению — ${res}`);
}); Каталог файла ресурсов
сохранения объединенного изображения.
Направление слияния изображений, y — горизонтальное, n — вертикальное.
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = новый ImgConcat();
константа р = {
folderPath:'.\img', //Каталог ресурсов targetFolder:'.\longImg', //Направление каталога хранения объединенных изображений:'y' //Направление склейки, y — горизонтально, n — вертикально}
// Объединяем все изображения в каталоге ImgConcatClass.concatAll(p).then(res=>{
console.log(`Сращивание завершено, путь к изображению — ${res}`);
}) Пользовательское матрицу слияния изображений, передает путь к изображению в каждом месте.
объединенного изображения
const p = {
shape:[['.\img\n1.jpg','.\img\white.jpg','.\img\n2.jpg'],
['.\img\white.jpg','.\img\n3.jpg','.\img\white.jpg'],
['.\img\n4.jpg','.\img\white.jpg','.\img\n5.jpg']
],
цель:'.\longImg'
};
//Настраиваемое изображение сращивания матрицы ImgConcatClass.conCatByMaxit(p).then(res=>{
console.log(`Сращивание завершено, путь к изображению — ${res}`);
}); https://gitee.com/zheng_yongtao/node-scripting-tool/tree/master/src/imgConcat