
Por lo general, cuando empalmamos imágenes, generalmente usamos PS u otras herramientas de procesamiento de imágenes para procesarlas y sintetizarlas. Esta vez es necesario empalmar imágenes, y espero que podamos usar código directamente para empalmar, por lo que existe dicha herramienta. Bolsa.
A través de este complemento, podemos realizar las siguientes operaciones en imágenes:
de la siguiente manera. Tenemos esas dos imágenes y ahora podemos usar esta herramienta para unirlas en una.

n1.jpg

n2.jpg
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = nuevo ImgConcat();
constante p1 = {
izquierda:'.\img\n1.jpg',
derecha:'.\img\n2.jpg',
objetivo:'.\longImg'
}
// Empalma dos imágenes horizontalmente ImgConcatClass.collapseHorizontal(p1).then(res=>{
console.log(`Empalme completado, la ruta de la imagen es ${res}`);
}); 
siguen siendo las dos imágenes de arriba. Las uniremos verticalmente con
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = nuevo ImgConcat();
constante p1 = {
izquierda:'.\img\n1.jpg',
derecha:'.\img\n2.jpg',
objetivo:'.\longImg'
}
//Une dos imágenes verticalmente ImgConcatClass.collapseVertical(p1).then(res=>{
console.log(`Empalme completado, la ruta de la imagen es ${res}`);
}); 
También podemos unir por lotes directamente todas las imágenes de un directorio en una imagen larga, como se muestra a continuación. Ahora queremos unir todas las imágenes del directorio:

const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = nuevo ImgConcat();
constante p = {
carpetaPath:'.\img', //Directorio de recursos targetFolder:'.\longImg', //Dirección del directorio de almacenamiento de imágenes convertidas:'y' //Dirección de empalme, y es horizontal, n es vertical}
// Concatena todas las imágenes en el directorio ImgConcatClass.concatAll(p).then(res=>{
console.log(`Empalme completado, la ruta de la imagen es ${res}`);
}) 
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = nuevo ImgConcat();
constante p = {
carpetaPath:'.\img', //Directorio de recursos targetFolder:'.\longImg', //Dirección del directorio de almacenamiento de imágenes convertidas:'n' //Dirección de empalme, y es horizontal, n es vertical}
// Concatena todas las imágenes en el directorio ImgConcatClass.concatAll(p).then(res=>{
console.log(`Empalme completado, la ruta de la imagen es ${res}`);
}) 
También podemos definir la matriz de empalme de imágenes nosotros mismos. shape es una matriz bidimensional y define las imágenes en cada posición. Los detalles son los siguientes:
const consoleInput = require('@jyeontu/img. -concate');
const ImgConcatClass = nuevo ImgConcat();
constante p = {
forma:[['.\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']
],
objetivo:'.\longImg'
};
//Imagen de empalme de matriz personalizada ImgConcatClass.conCatByMaxit(p).then(res=>{
console.log(`Empalme completado, la ruta de la imagen es ${res}`);
}); 
y utiliza GraphicsMagick para el empalme de imágenes
const gm = require('gm');
colapsar (izquierda, derecha, objetivo, bandera = verdadero) {
devolver nueva Promesa((r) => {
gm(izquierda).append(derecha,bandera).write(objetivo, err => {
si(err) console.log(err);
r();
})
})
} Utilice Sharp.js para obtener información de la imagen . gm = requerir('gm');
const fs = requerir('fs');
ruta constante = requerir('ruta');
const barra de progreso = require('@jyeontu/barra de progreso');
const {getFileSuffix,getMetadata,resizeImage} = require('./util');
doConcatAll = async(rutacarpeta,carpetadestino,dirección) => {
let fileList = fs.readdirSync(folderPath);
lista de archivos.sort((a, b) => {
devolver ruta.nombrebase(a) - ruta.nombrebase(b);
});
const extensionName = getFileSuffix(fileList[0], ".");
let targetFilePath = path.join(targetFolder, new Date().getTime() + '.' + extensionName);
configuración de barra constante = {
duración: fileList.length - 1,
actual: 0,
bloque: '█',
mostrarNúmero: verdadero,
consejo:{
0: 'Empalme...',
100: 'Empalme completado'
},
color:'verde'
};
let ProgressBarC = new ProgressBar(barConfig);
const imgInfo = espera this.getImgInfo(path.join(folderPath, fileList[0]));
for (let index = 1; index < fileList.length; index++) {
let leftFile = path.join(folderPath, fileList[índice - 1]);
let rightFile = ruta.join(carpetaPath, fileList[índice]);
const leftPath = espera this.resizeImage({
ruta: archivo izquierdo,
ancho:imgInfo.ancho,
altura:imgInfo.altura
});
const rightPath = espera this.resizeImage({
ruta: archivo derecho,
ancho:imgInfo.ancho,
altura:imgInfo.altura
});
progresoBarC.run(índice);
await this.collapse(index == 1? leftPath: targetFilePath,rightPath,targetFilePath,dirección);
fs.unlinkSync(rutaizquierda);
fs.unlinkSync(rutaderecha);
}
consola.log('');
devolver targetFilePath;
} const gm = require('gm');
const fs = requerir('fs');
ruta constante = requerir('ruta');
const barra de progreso = require('@jyeontu/barra de progreso');
const {getFileSuffix,getMetadata,resizeImage} = require('./util');
asíncrono conCatByMaxit(res){
const {forma} = res;
consttmpList = [];
configuración de barra constante = {
duración: forma[0].longitud * forma.longitud,
actual: 0,
bloque: '█',
mostrarNúmero: verdadero,
consejo:{
0: 'Empalme...',
100: 'Empalme completado'
},
color:'verde'
};
const barra de progresoC = nueva barra de progreso(barConfig);
dejar objetivo = '';
let extensionName = getFileSuffix(forma[0][0], ".");
const imgInfo = espera esto.getImgInfo(forma[0][0]);
for(let i = 0; i < forma.longitud; i++){
objetivo = res.destino + '\' + `targetImg${i}.${extensionName}`;
for(let j = 1; j < forma[i].longitud; j++){
const leftPath = espera this.resizeImage({
ruta: forma [i] [j - 1],
ancho:imgInfo.ancho,
altura:imgInfo.altura
});
const rightPath = esperar a cambiar el tamaño de la imagen ({
ruta: forma [i] [j],
ancho:imgInfo.ancho,
altura:imgInfo.altura
});
tmpList.push(ruta izquierda, ruta derecha, destino);
ProgressBarC.run(forma[i].longitud * i + j);
await this.collapse(j == 1? rutaizquierda: destino, rutaderecha,objetivo);
}
si(i>0){
espere this.collapse(res.target + '\' + `targetImg${i - 1}.${extensionName}`,target,target,false);
}
}
ProgressBarC.run(forma[0].longitud * forma.longitud);
const nuevoObjetivo = res.objetivo + '\' + nueva Fecha().getTime() + `.${extensionName}`;
fs.renameSync(objetivo,nuevoObjetivo)
for(let i = 0; i < tmpList.length; i++){
intentar{
fs.unlinkSync(tmpList[i]);
}captura(errar){
// consola.error(err);
}
}
consola.log('');
devolver nuevoObjetivo;
} const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat(); ruta de la imagen
derecha ruta de la imagen
Directorio sintético para guardar imágenes
const p1 = {
izquierda:'.\img\n1.jpg',
derecha:'.\img\n2.jpg',
objetivo:'.\longImg'
}
// Empalma dos imágenes horizontalmente ImgConcatClass.collapseHorizontal(p1).then(res=>{
console.log(`Empalme completado, la ruta de la imagen es ${res}`);
}); ruta de la imagen
derecha ruta de la imagen
guardado de la imagen sintetizada
const p1 = {
izquierda:'.\img\n1.jpg',
derecha:'.\img\n2.jpg',
objetivo:'.\longImg'
}
// Empalma dos imágenes verticalmente ImgConcatClass.collapseVertical(p1).then(res=>{
console.log(`Empalme completado, la ruta de la imagen es ${res}`);
}); parámetro directorio del archivo de recursos
del directorio de guardado de la imagen
dirección de fusión de la imagen, y es horizontal, n es vertical
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = nuevo ImgConcat();
constante p = {
carpetaPath:'.\img', //Directorio de recursos targetFolder:'.\longImg', //Dirección del directorio de almacenamiento de imágenes fusionadas:'y' //Dirección de empalme, y es horizontal, n es vertical}
// Concatena todas las imágenes en el directorio ImgConcatClass.concatAll(p).then(res=>{
console.log(`Empalme completado, la ruta de la imagen es ${res}`);
}) Matriz de fusión de imagen , pase la ruta de la imagen en cada ubicación.
la imagen fusionada
const p = {
forma:[['.\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']
],
objetivo:'.\longImg'
};
//Imagen de empalme de matriz personalizada ImgConcatClass.conCatByMaxit(p).then(res=>{
console.log(`Empalme completado, la ruta de la imagen es ${res}`);
}); https://gitee.com/zheng_yongtao/node-scripting-tool/tree/master/src/imgConcat