
Normalmente, quando emendamos imagens, geralmente usamos PS ou outras ferramentas de processamento de imagem para processá-las e sintetizá-las. Desta vez, há necessidade de emendar imagens, e espero que possamos usar código diretamente para emendar, para que exista essa ferramenta. Bolsa.
Através deste plug-in, podemos realizar as seguintes operações nas imagens:
como segue. Temos essas duas imagens e agora podemos usar esta ferramenta para uni-las em uma.

n1.jpg

n2.jpg
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat();
const p1 = {
esquerda:'.\img\n1.jpg',
direita:'.\img\n2.jpg',
alvo:'.\longImg'
}
// Une duas imagens horizontalmente ImgConcatClass.collapseHorizontal(p1).then(res=>{
console.log(`Splicing concluído, caminho da imagem é ${res}`);
}); 
ainda é a das duas imagens acima. Vamos emendá-las verticalmente com
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat();
const p1 = {
esquerda:'.\img\n1.jpg',
direita:'.\img\n2.jpg',
alvo:'.\longImg'
}
//Junte duas imagens verticalmente ImgConcatClass.collapseVertical(p1).then(res=>{
console.log(`Splicing concluído, caminho da imagem é ${res}`);
}); 
Também podemos unir em lote diretamente todas as imagens em um diretório em uma imagem longa, conforme mostrado abaixo.

const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat();
const p = {
folderPath:'.\img', //Diretório de recursos targetFolder:'.\longImg', //Direção do diretório de armazenamento de imagem convertida:'y' //Direção de emenda, y é horizontal, n é vertical}
// Concatena todas as imagens no diretório ImgConcatClass.concatAll(p).then(res=>{
console.log(`Splicing concluído, caminho da imagem é ${res}`);
}) 
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat();
const p = {
folderPath:'.\img', //Diretório de recursos targetFolder:'.\longImg', //Direção do diretório de armazenamento de imagem convertida:'n' //Direção de emenda, y é horizontal, n é vertical}
// Concatena todas as imagens no diretório ImgConcatClass.concatAll(p).then(res=>{
console.log(`Splicing concluído, caminho da imagem é ${res}`);
}) 
Também podemos definir a matriz de emenda da imagem. shape é uma matriz bidimensional e define as imagens em cada posição. Os detalhes são os seguintes:
const consoleInput = require('@jyeontu/img. -concat');
const ImgConcatClass = new ImgConcat();
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']
],
alvo:'.\longImg'
};
//Imagem de emenda de matriz personalizada ImgConcatClass.conCatByMaxit(p).then(res=>{
console.log(`Splicing concluído, caminho da imagem é ${res}`);
}); 
e usa GraphicsMagick para emenda de imagem
const gm = require('gm');
recolher (esquerda, direita, alvo, bandeira = verdadeiro) {
retornar nova promessa((r) => {
gm(esquerda).append(direita,flag).write(target, err => {
se(erro) console.log(erro);
r();
})
})
} Use sharp.js para obter informações da imagem . gm = requer('gm');
const fs = requer('fs');
const caminho = require('caminho');
const progressBar = require('@jyeontu/progress-bar');
const {getFileSuffix,getMetadata,resizeImage} = require('./util');
doConcatAll = async(folderPath,targetFolder,direction) => {
deixe fileList = fs.readdirSync(folderPath);
lista de arquivos.sort((a, b) => {
retornar caminho.basename(a) - caminho.basename(b);
});
const extensionName = getFileSuffix(fileList[0], ".");
deixe targetFilePath = path.join(targetFolder, new Date().getTime() + '.' + extensionName);
const barConfig = {
duração: fileList.length - 1,
atual: 0,
bloco:'█',
showNumber: verdadeiro,
dica:{
0: 'Emenda...',
100:'Emenda concluída'
},
cor: 'verde'
};
deixe progressBarC = new progressBar(barConfig);
const imgInfo = aguarde this.getImgInfo(path.join(folderPath, fileList[0]));
for (deixe índice = 1; índice <fileList.length; índice++) {
deixe leftFile = path.join(folderPath, fileList[index - 1]);
deixe rightFile = path.join(folderPath, fileList[index]);
const leftPath = aguarde this.resizeImage({
caminho: arquivo esquerdo,
largura:imgInfo.largura,
altura:imgInfo.height
});
const rightPath = aguarde this.resizeImage({
caminho: arquivo direito,
largura:imgInfo.largura,
altura:imgInfo.height
});
progressBarC.run(índice);
aguarde this.collapse (index == 1? leftPath: targetFilePath, rightPath, targetFilePath, direção);
fs.unlinkSync(leftPath);
fs.unlinkSync(rightPath);
}
console.log('');
retornar targetFilePath;
} const gm = require('gm');
const fs = requer('fs');
const caminho = require('caminho');
const progressBar = require('@jyeontu/progress-bar');
const {getFileSuffix,getMetadata,resizeImage} = require('./util');
assíncrono conCatByMaxit(res){
const {forma} = res;
const listatmp = [];
const barConfig = {
duração: forma[0].comprimento * forma.comprimento,
atual: 0,
bloco:'█',
showNumber: verdadeiro,
dica:{
0: 'Emenda...',
100:'Emenda concluída'
},
cor: 'verde'
};
const progressBarC = new progressBar(barConfig);
deixe alvo = '';
deixe extensionName = getFileSuffix(shape[0][0], ".");
const imgInfo = aguarde this.getImgInfo(shape[0][0]);
for(seja i = 0; i < forma.comprimento; i++){
alvo = res.target + '\' + `targetImg${i}.${extensionName}`;
for(seja j = 1; j < forma[i].comprimento; j++){
const leftPath = aguarde this.resizeImage({
caminho:forma[i][j - 1],
largura:imgInfo.largura,
altura:imgInfo.height
});
const rightPath = aguarda resizeImage({
caminho:forma[i][j],
largura:imgInfo.largura,
altura:imgInfo.height
});
tmpList.push(leftPath,rightPath,target);
progressBarC.run(forma[i].comprimento * i + j);
aguarde this.collapse(j == 1 ? leftPath : target,rightPath,target);
}
se(eu>0){
aguarde this.collapse(res.target + '\' + `targetImg${i - 1}.${extensionName}`,target,target,false);
}
}
progressBarC.run(forma[0].comprimento * forma.comprimento);
const newTarget = res.target + '\' + new Date().getTime() + `.${extensionName}`;
fs.renameSync(destino,novodestino)
for(deixe i = 0; i < tmpList.length; i++){
tentar{
fs.unlinkSync(tmpList[i]);
}pegar(errar){
//console.error(err);
}
}
console.log('');
retornar novoTarget;
} const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat(); caminho da imagem
direita caminho da imagem
Diretório de salvamento de imagem sintética
const p1 = {
esquerda:'.\img\n1.jpg',
direita:'.\img\n2.jpg',
alvo:'.\longImg'
}
// Une duas imagens horizontalmente ImgConcatClass.collapseHorizontal(p1).then(res=>{
console.log(`Splicing concluído, caminho da imagem é ${res}`);
}); esquerda caminho da imagem
direita caminho da imagem
imagem sintetizada salvando
const p1 = {
esquerda:'.\img\n1.jpg',
direita:'.\img\n2.jpg',
alvo:'.\longImg'
}
// Unir duas imagens verticalmente ImgConcatClass.collapseVertical(p1).then(res=>{
console.log(`Splicing concluído, caminho da imagem é ${res}`);
}); diretório de arquivo de recurso
imagem mesclada salvando
direção de fusão de imagem, y é horizontal, n é vertical
const consoleInput = require('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat();
const p = {
folderPath:'.\img', //Diretório de recursos targetFolder:'.\longImg', //A direção do diretório de armazenamento de imagem mesclada:'y' //Direção de emenda, y é horizontal, n é vertical}
// Concatena todas as imagens no diretório ImgConcatClass.concatAll(p).then(res=>{
console.log(`Splicing concluído, caminho da imagem é ${res}`);
}) matriz de mesclagem de imagem, passe o caminho da imagem em cada local.
imagem mesclada
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']
],
alvo:'.\longImg'
};
//Imagem de emenda de matriz personalizada ImgConcatClass.conCatByMaxit(p).then(res=>{
console.log(`Splicing concluído, caminho da imagem é ${res}`);
}); https://gitee.com/zheng_yongtao/node-scripting-tool/tree/master/src/imgConcat