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