Обычно, когда мы соединяем изображения, мы обычно используем 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