
Habituellement, lorsque nous assemblons des images, nous utilisons généralement PS ou d'autres outils de traitement d'image pour les traiter et les synthétiser. Cette fois, il y a un besoin d'épissage d'images, et j'espère que nous pourrons utiliser directement du code pour épisser, donc il existe un tel outil. Sac.
Grâce à ce plug-in, nous pouvons effectuer les opérations suivantes sur les images :
comme suit Nous avons ces deux images, et maintenant nous pouvons utiliser cet outil pour les fusionner en une seule.

n1.jpg

n2.jpg
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat();
const p1 = {
à gauche : '.\img\n1.jpg',
à droite : '.\img\n2.jpg',
cible : '.\longImg'
}
// Épisser deux images horizontalement ImgConcatClass.collapseHorizontal(p1).then(res=>{
console.log(`Épissage terminé, le chemin de l'image est ${res}`);
}); 
correspond toujours aux deux images ci-dessus. Nous les épisserons verticalement avec
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat();
const p1 = {
à gauche : '.\img\n1.jpg',
à droite : '.\img\n2.jpg',
cible : '.\longImg'
}
//Joignez deux images verticalement ImgConcatClass.collapseVertical(p1).then(res=>{
console.log(`Épissage terminé, le chemin de l'image est ${res}`);
}); 
Nous pouvons également assembler directement par lots toutes les images d'un répertoire en une longue image, comme indiqué ci-dessous. Nous voulons maintenant assembler toutes les images du répertoire :

const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat();
const p = {
FolderPath:'.\img', //Répertoire de ressources targetFolder:'.\longImg', //Direction du répertoire de stockage d'images converties :'y' //Direction d'épissage, y est horizontal, n est vertical}
// Concatène toutes les images du répertoire ImgConcatClass.concatAll(p).then(res=>{
console.log(`Épissage terminé, le chemin de l'image est ${res}`);
}) 
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat();
const p = {
foldPath:'.\img', //Répertoire de ressources targetFolder:'.\longImg', //Direction du répertoire de stockage d'images converties :'n' //Direction d'épissage, y est horizontal, n est vertical}
// Concatène toutes les images du répertoire ImgConcatClass.concatAll(p).then(res=>{
console.log(`Épissage terminé, le chemin de l'image est ${res}`);
}) 
Nous pouvons également définir nous-mêmes la matrice d'épissage d'image. shape est un tableau bidimensionnel et définit les images à chaque position :
const consoleInput = require('@jyeontu/img. -concat');
const ImgConcatClass = new ImgConcat();
const p = {
forme :[['.\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']
],
cible : '.\longImg'
} ;
//Image d'épissage matricielle personnalisée ImgConcatClass.conCatByMaxit(p).then(res=>{
console.log(`Épissage terminé, le chemin de l'image est ${res}`);
}); 
et utilise GraphicsMagick pour l'épissage d'image
const gm = require('gm');
réduire (gauche, droite, cible, drapeau = vrai) {
renvoyer une nouvelle promesse ((r) => {
gm(gauche).append(droite,flag).write(target, err => {
if(err) console.log(err);
r();
})
})
} Utilisez Sharp.js pour obtenir des informations sur l'image . gm = exiger('gm');
const fs = require('fs');
const chemin = require('chemin');
const progressBar = require('@jyeontu/progress-bar');
const {getFileSuffix,getMetadata,resizeImage} = require('./util');
doConcatAll = async(folderPath,targetFolder,direction) => {
laissez fileList = fs.readdirSync(folderPath);
fileList.sort((a, b) => {
return path.basename(a) - path.basename(b);
});
const extensionName = getFileSuffix(fileList[0], ".");
laissez targetFilePath = path.join(targetFolder, new Date().getTime() + '.' + extensionName);
const barConfig = {
durée : fileList.length - 1,
courant: 0,
bloc : '█',
showNumber : vrai,
conseil:{
0 : 'Épissage...',
100 : « Épissage terminé »
},
couleur: 'vert'
} ;
laissez progressBarC = new progressBar(barConfig);
const imgInfo = wait this.getImgInfo(path.join(folderPath, fileList[0]));
pour (soit index = 1; index < fileList.length; index++) {
let leftFile = path.join(folderPath, fileList[index - 1]);
let rightFile = path.join(folderPath, fileList[index]);
const leftPath = attendre this.resizeImage({
chemin : fichier gauche,
largeur:imgInfo.largeur,
hauteur:imgInfo.hauteur
});
const rightPath = attendre this.resizeImage({
chemin : fichier droit,
largeur:imgInfo.largeur,
hauteur:imgInfo.hauteur
});
progressBarC.run(index);
wait this.collapse(index == 1 ? leftPath : targetFilePath,rightPath,targetFilePath,direction);
fs.unlinkSync(leftPath);
fs.unlinkSync(rightPath);
}
console.log('');
retourner targetFilePath ;
} const gm = require('gm');
const fs = require('fs');
const chemin = require('chemin');
const progressBar = require('@jyeontu/progress-bar');
const {getFileSuffix,getMetadata,resizeImage} = require('./util');
asynchrone conCatByMaxit(res){
const {forme} = res ;
const tmpListe = [];
const barConfig = {
durée : forme[0].longueur * forme.longueur,
courant: 0,
bloc : '█',
showNumber : vrai,
conseil:{
0 : 'Épissage...',
100 : « Épissage terminé »
},
couleur: 'vert'
} ;
const progressBarC = new progressBar(barConfig);
laissez cible = '';
let extensionName = getFileSuffix(shape[0][0], ".");
const imgInfo = wait this.getImgInfo(shape[0][0]);
pour(soit i = 0; i < shape.length; i++){
target = res.target + '\' + `targetImg${i}.${extensionName}` ;
pour(soit j = 1; j < forme[i].longueur; j++){
const leftPath = attendre this.resizeImage({
chemin:forme[i][j - 1],
largeur:imgInfo.largeur,
hauteur:imgInfo.hauteur
});
const rightPath = attendre resizeImage({
chemin:forme[i][j],
largeur:imgInfo.largeur,
hauteur:imgInfo.hauteur
});
tmpList.push(leftPath,rightPath,target);
progressBarC.run(shape[i].length * i + j);
wait this.collapse(j == 1 ? leftPath : target,rightPath,target);
}
si(je>0){
wait 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 (cible, nouvelle cible)
pour(soit i = 0; i < tmpList.length; i++){
essayer{
fs.unlinkSync(tmpList[i]);
}attraper(err){
// console.erreur(erreur);
}
}
console.log('');
retourner newTarget ;
} const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat(); chemin d'image
du chemin d'image
Répertoire de sauvegarde d'image synthétique
const p1 = {
à gauche : '.\img\n1.jpg',
à droite : '.\img\n2.jpg',
cible : '.\longImg'
}
// Épisser deux images horizontalement ImgConcatClass.collapseHorizontal(p1).then(res=>{
console.log(`Épissage terminé, le chemin de l'image est ${res}`);
}); chemin d'image gauche
chemin d'image droit
de sauvegarde d'image synthétisé
const p1 = {
à gauche : '.\img\n1.jpg',
à droite : '.\img\n2.jpg',
cible : '.\longImg'
}
// Épisser deux images verticalement ImgConcatClass.collapseVertical(p1).then(res=>{
console.log(`Épissage terminé, le chemin de l'image est ${res}`);
}); répertoire du fichier de ressources
du répertoire de sauvegarde des images fusionnées
direction de la fusion des images, y est horizontal, n est vertical
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat();
const p = {
folderPath:'.\img', //Répertoire de ressources targetFolder:'.\longImg', //Direction du répertoire de stockage d'images fusionnées :'y' //Direction d'épissage, y est horizontal, n est vertical}
// Concatène toutes les images du répertoire ImgConcatClass.concatAll(p).then(res=>{
console.log(`Épissage terminé, le chemin de l'image est ${res}`);
}) la matrice de fusion d'images, transmettez le chemin de l'image à chaque emplacement.
l'image fusionnée
const p = {
forme :[['.\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']
],
cible : '.\longImg'
} ;
//Image d'épissage matricielle personnalisée ImgConcatClass.conCatByMaxit(p).then(res=>{
console.log(`Épissage terminé, le chemin de l'image est ${res}`);
}); https://gitee.com/zheng_yongtao/node-scripting-tool/tree/master/src/imgConcat