Biasanya ketika kita menyambung gambar biasanya menggunakan PS atau alat pengolah gambar lainnya untuk mengolah dan mensintesisnya. Kali ini ada kebutuhan untuk penyambungan gambar, dan saya berharap kita bisa langsung menggunakan kode untuk menyambungnya, jadi ada alat seperti itu. Tas.
Melalui plug-in ini, kita dapat melakukan operasi berikut pada gambar:
seperti berikut. Kita mempunyai dua gambar, dan sekarang kita dapat menggunakan alat ini untuk menggabungkannya menjadi satu
n1.jpg
n2.jpg
const consoleInput = require('@jyeontu/img-concat'); const ImgConcatClass = ImgConcat baru(); konstanta p1 = { kiri:'.\img\n1.jpg', kanan:'.\img\n2.jpg', target:'.\longImg' } // Menyambungkan dua gambar secara horizontal ImgConcatClass.collapseHorizontal(p1).then(res=>{ console.log(`Penyambungan selesai, jalur gambar adalah ${res}`); });
masih seperti dua gambar di atas. Kita akan menyambungkannya secara vertikal dengan
const consoleInput = require('@jyeontu/img-concat'); const ImgConcatClass = ImgConcat baru(); konstanta p1 = { kiri:'.\img\n1.jpg', kanan:'.\img\n2.jpg', target:'.\longImg' } //Gabungkan dua gambar secara vertikal ImgConcatClass.collapseVertical(p1).then(res=>{ console.log(`Penyambungan selesai, jalur gambar adalah ${res}`); });
Kita juga bisa langsung menggabungkan semua gambar dalam direktori menjadi sebuah gambar panjang, seperti yang ditunjukkan di bawah ini.
const consoleInput = require('@jyeontu/img-concat'); const ImgConcatClass = ImgConcat baru(); konstanta p = { folderPath:'.\img', //Direktori sumber daya targetFolder:'.\longImg', //Arah direktori penyimpanan gambar yang dikonversi:'y' //Arah penyambungan, y horizontal, n vertikal} // Gabungkan semua gambar di direktori ImgConcatClass.concatAll(p).then(res=>{ console.log(`Penyambungan selesai, jalur gambar adalah ${res}`); })
const consoleInput = require('@jyeontu/img-concat'); const ImgConcatClass = ImgConcat baru(); konstanta p = { folderPath:'.\img', //Direktori sumber daya targetFolder:'.\longImg', //Arah direktori penyimpanan gambar yang dikonversi:'n' //Arah penyambungan, y horizontal, n vertikal} // Gabungkan semua gambar di direktori ImgConcatClass.concatAll(p).then(res=>{ console.log(`Penyambungan selesai, jalur gambar adalah ${res}`); })
Kita juga dapat mendefinisikan sendiri matriks penyambungan gambar. shape
adalah array dua dimensi dan mendefinisikan gambar di setiap posisi. Detailnya adalah sebagai berikut:
const consoleInput = require('@jyeontu/img -kontak'); const ImgConcatClass = ImgConcat baru(); konstanta p = { bentuk:[['.\img\n1.jpg','.\img\putih.jpg','.\img\n2.jpg'], ['.\img\putih.jpg','.\img\n3.jpg','.\img\putih.jpg'], ['.\img\n4.jpg','.\img\putih.jpg','.\img\n5.jpg'] ], target:'.\longImg' }; //Gambar penyambungan matriks yang disesuaikan ImgConcatClass.conCatByMaxit(p).then(res=>{ console.log(`Penyambungan selesai, jalur gambar adalah ${res}`); });
dan menggunakan GraphicsMagick untuk penyambungan gambar
const gm = require('gm'); runtuh (kiri,kanan,target,bendera = benar) { kembalikan Janji baru((r) => { gm(kiri).tambahkan(kanan,bendera).tulis(target, err => { if(err) konsol.log(err); R(); }) }) }Gunakan sharp.js untuk mendapatkan informasi gambar
kemajuan gm = memerlukan('gm'); const fs = memerlukan('fs'); const jalur = memerlukan('jalur'); const progressBar = memerlukan('@jyeontu/progress-bar'); const {getFileSuffix,getMetadata,resizeImage} = memerlukan('./util'); doConcatAll = async(folderPath,targetFolder,arah) => { biarkan fileList = fs.readdirSync(folderPath); fileList.sort((a, b) => { kembali jalur.nama dasar(a) - jalur.nama dasar(b); }); const extensionName = getFileSuffix(fileList[0], "."); biarkan targetFilePath = path.join(targetFolder, Tanggal baru().getTime() + '.' + extensionName); const barConfig = { durasi: fileList.length - 1, saat ini: 0, blok:'█', nomor acara: benar, tip:{ 0: 'Menyambung...', 100:'Penyambungan selesai' }, warna: 'hijau' }; biarkan progresBarC = progresBar baru(barConfig); const imgInfo = tunggu ini.getImgInfo(path.join(folderPath, fileList[0])); for (misalkan indeks = 1; indeks < fileList.length; indeks++) { biarkan leftFile = path.join(folderPath, fileList[index - 1]); biarkan rightFile = path.join(folderPath, fileList[index]); const leftPath = tunggu ini.resizeImage({ jalur: File kiri, lebar:imgInfo.lebar, tinggi:imgInfo.tinggi }); const rightPath = tunggu ini.resizeImage({ jalur:kananFile, lebar:imgInfo.lebar, tinggi:imgInfo.tinggi }); progresBarC.run(indeks); tunggu ini.runtuh(indeks == 1 ? leftPath : targetFilePath,rightPath,targetFilePath,direction); fs.unlinkSync(leftPath); fs.unlinkSync(Jalur Kanan); } konsol.log(''); kembalikan targetFilePath; }
const gm = require('gm'); const fs = memerlukan('fs'); const jalur = memerlukan('jalur'); const progressBar = memerlukan('@jyeontu/progress-bar'); const {getFileSuffix,getMetadata,resizeImage} = memerlukan('./util'); async conCatByMaxit(res){ const {bentuk} = res; const tmpList = []; const barConfig = { durasi: bentuk[0].panjang * bentuk.panjang, saat ini: 0, blok:'█', nomor acara: benar, tip:{ 0: 'Menyambung...', 100:'Penyambungan selesai' }, warna: 'hijau' }; const progresBarC = progresBar baru(barConfig); biarkan target = ''; biarkan extensionName = getFileSuffix(bentuk[0][0], "."); const imgInfo = tunggu ini.getImgInfo(bentuk[0][0]); for(misalkan i = 0; i < bentuk.panjang; i++){ target = res.target + '\' + `targetImg${i}.${extensionName}`; untuk(misalkan j = 1; j < bentuk[i].panjang; j++){ const leftPath = tunggu ini.resizeImage({ jalur:bentuk[i][j - 1], lebar:imgInfo.lebar, tinggi:imgInfo.tinggi }); const rightPath = menunggu resizeImage({ jalur:bentuk[i][j], lebar:imgInfo.lebar, tinggi:imgInfo.tinggi }); tmpList.push(Jalur Kiri,Jalur Kanan,target); progresBarC.run(bentuk[i].panjang * i + j); tunggu ini.runtuh(j == 1 ? leftPath : target,rightPath,target); } jika(i>0){ tunggu ini.runtuh(res.target + '\' + `targetImg${i - 1}.${extensionName}`,target,target,false); } } progresBarC.run(bentuk[0].panjang * bentuk.panjang); const newTarget = res.target + '\' + Tanggal baru().getTime() + `.${extensionName}`; fs.renameSync(target,Target baru) for(biarkan i = 0; i < tmpList.length; i++){ mencoba{ fs.unlinkSync(tmpList[i]); }menangkap(salah){ // konsol.kesalahan(err); } } konsol.log(''); kembalikan Target baru; }
const consoleInput = require('@jyeontu/img-concat'); const ImgConcatClass = new ImgConcat();
jalur gambar
jalur gambar kanan kanan
penyimpanan gambar sintetis
const p1 = { kiri:'.\img\n1.jpg', kanan:'.\img\n2.jpg', target:'.\longImg' } // Menyambungkan dua gambar secara horizontal ImgConcatClass.collapseHorizontal(p1).then(res=>{ console.log(`Penyambungan selesai, jalur gambar adalah ${res}`); });
jalur gambar kiri
jalur gambar kanan
penyimpanan gambar yang disintesis
const p1 = { kiri:'.\img\n1.jpg', kanan:'.\img\n2.jpg', target:'.\longImg' } // Menyambungkan dua gambar secara vertikal ImgConcatClass.collapseVertical(p1).then(res=>{ console.log(`Penyambungan selesai, jalur gambar adalah ${res}`); });
direktori file sumber daya
menggabungkan
arah penggabungan gambar, y horizontal, n vertikal
const consoleInput = require('@jyeontu/img-concat'); const ImgConcatClass = ImgConcat baru(); konstanta p = { folderPath:'.\img', //Direktori sumber daya targetFolder:'.\longImg', //Arah direktori penyimpanan gambar gabungan:'y' //Arah penyambungan, y horizontal, n vertikal} // Gabungkan semua gambar di direktori ImgConcatClass.concatAll(p).then(res=>{ console.log(`Penyambungan selesai, jalur gambar adalah ${res}`); })
matriks penggabungan gambar, teruskan jalur gambar di setiap lokasi.
gambar gabungan
const p = { bentuk:[['.\img\n1.jpg','.\img\putih.jpg','.\img\n2.jpg'], ['.\img\putih.jpg','.\img\n3.jpg','.\img\putih.jpg'], ['.\img\n4.jpg','.\img\putih.jpg','.\img\n5.jpg'] ], target:'.\longImg' }; //Gambar penyambungan matriks yang disesuaikan ImgConcatClass.conCatByMaxit(p).then(res=>{ console.log(`Penyambungan selesai, jalur gambar adalah ${res}`); });
https://gitee.com/zheng_yongtao/node-scripting-tool/tree/master/src/imgConcat