
โดยปกติแล้วเมื่อเราต่อภาพ เรามักจะใช้ PS หรือเครื่องมือประมวลผลภาพอื่น ๆ เพื่อประมวลผลและสังเคราะห์ภาพเหล่านั้น คราวนี้จำเป็นต้องมีการต่อภาพ และผมหวังว่าเราจะสามารถใช้โค้ดในการต่อภาพได้โดยตรง ดังนั้นจึงมีเครื่องมือดังกล่าว ถุง.
ด้วยปลั๊กอินนี้ เราสามารถดำเนินการต่อไปนี้กับรูปภาพ:
รูปภาพสองรูปในแนวนอนดังนี้

n1.jpg

n2.jpg
const consoleInput = need('@jyeontu/img-concat');
const ImgConcatClass = ImgConcat ใหม่ ();
const p1 = {
ซ้าย:'.\img\n1.jpg',
ขวา:'.\img\n2.jpg',
เป้าหมาย:'.\longImg'
-
// ประกบสองภาพในแนวนอน ImgConcatClass.collapseHorizontal(p1).then(res=>{
console.log(`การประกบเสร็จสมบูรณ์ เส้นทางรูปภาพคือ ${res}`);
}); 
ยังคงเป็นภาพสองภาพด้านบน เราจะต่อภาพทั้งสองในแนวตั้งด้วย
const consoleInput = need('@jeontu/img-concat');
const ImgConcatClass = ImgConcat ใหม่ ();
const p1 = {
ซ้าย:'.\img\n1.jpg',
ขวา:'.\img\n2.jpg',
เป้าหมาย:'.\longImg'
-
//รวมสองภาพในแนวตั้ง ImgConcatClass.collapseVertical(p1).then(res=>{
console.log(`การประกบเสร็จสมบูรณ์ เส้นทางรูปภาพคือ ${res}`);
}); 
เรายังสามารถต่อภาพทั้งหมดในไดเร็กทอรีเป็นภาพขนาดยาวได้โดยตรง ดังที่แสดงด้านล่าง

const consoleInput = need('@jyeontu/img-concat');
const ImgConcatClass = ImgConcat ใหม่ ();
const พี = {
folderPath:'.\img', // ไดเรกทอรีทรัพยากร targetFolder:'.\longImg', // ทิศทางไดเรกทอรีการจัดเก็บภาพที่แปลงแล้ว: 'y' // ทิศทางประกบ, y คือแนวนอน, n คือแนวตั้ง}
// เชื่อมต่อรูปภาพทั้งหมดในไดเร็กทอรี ImgConcatClass.concatAll(p).then(res=>{
console.log(`การประกบเสร็จสมบูรณ์ เส้นทางรูปภาพคือ ${res}`);
}) 
const consoleInput = need('@jyeontu/img-concat');
const ImgConcatClass = ImgConcat ใหม่ ();
const พี = {
folderPath:'.\img', // ไดเร็กทอรีทรัพยากร targetFolder:'.\longImg', // ทิศทางไดเร็กทอรีที่เก็บรูปภาพที่แปลงแล้ว:'n' // ทิศทางประกบ, y คือแนวนอน, n คือแนวตั้ง}
// เชื่อมต่อรูปภาพทั้งหมดในไดเร็กทอรี ImgConcatClass.concatAll(p).then(res=>{
console.log(`การประกบเสร็จสมบูรณ์ เส้นทางรูปภาพคือ ${res}`);
}) 
เอง shape เป็นอาร์เรย์สองมิติและกำหนดรูปภาพในแต่ละ
ตำแหน่ง -เชื่อมต่อ');
const ImgConcatClass = ImgConcat ใหม่ ();
const พี = {
รูปร่าง:[['.\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']
-
เป้าหมาย:'.\longImg'
-
// รูปภาพการต่อเมทริกซ์แบบกำหนดเอง ImgConcatClass.conCatByMaxit(p).then(res=>{
console.log(`การประกบเสร็จสมบูรณ์ เส้นทางรูปภาพคือ ${res}`);
}); 
และใช้ GraphicsMagick สำหรับการต่อภาพ
const gm = need('gm');
ยุบ (ซ้าย, ขวา, เป้าหมาย, ธง = จริง) {
คืนสัญญาใหม่ ((r) => {
gm(left).append(right,flag).write(target, err => {
ถ้า (ผิดพลาด) console.log (ผิดพลาด);
ร();
-
-
} ใช้ Sharp.js เพื่อรับข้อมูลรูปภาพ ขนาด
gm = ต้องการ('gm');
const fs = ต้องการ('fs');
เส้นทาง const = ต้องการ ('เส้นทาง');
const ProgressBar = ต้องการ('@jyeontu/progress-bar');
const {getFileSuffix,getMetadata,resizeImage} = ต้องการ('./util');
doConcatAll = async (เส้นทางโฟลเดอร์, targetFolder, ทิศทาง) => {
ให้ fileList = fs.readdirSync(folderPath);
fileList.sort((ก, ข) => {
กลับ path.basename(a) - path.basename(b);
-
const extensionName = getFileSuffix(fileList[0], ".");
ให้ targetFilePath = path.join(targetFolder, new Date().getTime() + '.' + extensionName);
const barConfig = {
ระยะเวลา: fileList.length - 1,
ปัจจุบัน: 0,
บล็อก:'█',
showNumber: จริง,
เคล็ดลับ:{
0: 'กำลังประกบ...',
100:'การประกบเสร็จสมบูรณ์'
-
สี:'เขียว'
-
ให้progressBarC = newprogressBar(barConfig);
const imgInfo = รอสิ่งนี้.getImgInfo(path.join(folderPath, fileList[0]));
สำหรับ (ให้ดัชนี = 1; ดัชนี < fileList.length; ดัชนี ++) {
ให้ leftFile = path.join(folderPath, fileList[index - 1]);
ให้ rightFile = path.join(folderPath, fileList[index]);
const leftPath = รอสิ่งนี้.resizeImage({
เส้นทาง: ไฟล์ซ้าย,
ความกว้าง:imgInfo.width,
ความสูง:imgInfo.height
-
const rightPath = รอสิ่งนี้.resizeImage({
เส้นทาง: ไฟล์ขวา,
ความกว้าง:imgInfo.width,
ความสูง:imgInfo.height
-
ProgressBarC.run(ดัชนี);
รอสิ่งนี้.ยุบ(ดัชนี == 1 ? leftPath : targetFilePath,rightPath,targetFilePath,ทิศทาง);
fs.unlinkSync(เส้นทางซ้าย);
fs.unlinkSync(เส้นทางขวา);
-
console.log('');
กลับ targetFilePath;
} const gm = need('gm');
const fs = ต้องการ('fs');
เส้นทาง const = ต้องการ ('เส้นทาง');
const ProgressBar = ต้องการ('@jyeontu/progress-bar');
const {getFileSuffix,getMetadata,resizeImage} = ต้องการ('./util');
async conCatByMaxit (ความละเอียด) {
const {รูปร่าง} = ความละเอียด;
const tmpList = [];
const barConfig = {
ระยะเวลา: รูปร่าง[0].ความยาว * รูปร่าง.ความยาว,
ปัจจุบัน: 0,
บล็อก:'█',
showNumber: จริง,
เคล็ดลับ:{
0: 'กำลังประกบ...',
100:'การประกบเสร็จสมบูรณ์'
-
สี:'เขียว'
-
constความคืบหน้าBarC =แถบความคืบหน้าใหม่(barConfig);
ให้เป้าหมาย = '';
ให้ extensionName = getFileSuffix(shape[0][0], ".");
const imgInfo = รอสิ่งนี้.getImgInfo(shape[0][0]);
สำหรับ (ให้ i = 0; i < รูปร่างความยาว; i++){
เป้าหมาย = res.target + '\' + `targetImg${i}.${extensionName}`;
สำหรับ (ให้ j = 1; j < รูปร่าง [i].length; j++){
const leftPath = รอสิ่งนี้.resizeImage({
เส้นทาง:รูปร่าง[i][j - 1],
ความกว้าง:imgInfo.width,
ความสูง:imgInfo.height
-
const rightPath = รอการปรับขนาดรูปภาพ ({
เส้นทาง:รูปร่าง[i][j],
ความกว้าง:imgInfo.width,
ความสูง:imgInfo.height
-
tmpList.push(เส้นทางซ้าย,เส้นทางขวา,เป้าหมาย);
ความคืบหน้าBarC.run(รูปร่าง[i].ความยาว * i + j);
รอสิ่งนี้.ยุบ(j == 1 ? leftPath : target,rightPath,target);
-
ถ้า(i>0){
รอสิ่งนี้.collapse(res.target + '\' + `targetImg${i - 1}.${extensionName}`,target,target,false);
-
-
ความคืบหน้าBarC.run(รูปร่าง[0].ความยาว * รูปร่างความยาว);
const newTarget = res.target + '\' + วันที่ใหม่().getTime() + `.${extensionName}`;
fs.renameSync (เป้าหมาย newTarget)
สำหรับ (ให้ i = 0; i < tmpList.length; i++){
พยายาม{
fs.unlinkSync(tmpList[i]);
} จับ (ผิดพลาด) {
// console.error(ผิดพลาด);
-
-
console.log('');
กลับเป้าหมายใหม่;
} const consoleInput = need('@jyeontu/img-concat');
const ImgConcatClass = new ImgConcat(); ซ้าย เส้นทางรูปภาพ
เส้นทางรูปภาพ
ไดเร็กทอรีการบันทึกรูปภาพสังเคราะห์
const p1 = {
ซ้าย:'.\img\n1.jpg',
ขวา:'.\img\n2.jpg',
เป้าหมาย:'.\longImg'
-
// ประกบสองภาพในแนวนอน ImgConcatClass.collapseHorizontal(p1).then(res=>{
console.log(`การประกบเสร็จสมบูรณ์ เส้นทางรูปภาพคือ ${res}`);
}); เส้นทางภาพซ้าย
เส้นทางภาพขวา
สังเคราะห์
const p1 = {
ซ้าย:'.\img\n1.jpg',
ขวา:'.\img\n2.jpg',
เป้าหมาย:'.\longImg'
-
// ประกบสองภาพในแนวตั้ง ImgConcatClass.collapseVertical(p1).then(res=>{
console.log(`การประกบเสร็จสมบูรณ์ เส้นทางรูปภาพคือ ${res}`);
}); ไดเรกทอรีไฟล์ทรัพยากร
ผสานภาพ บันทึก
ทิศทางการรวมภาพ y คือแนวนอน n คือแนวตั้ง
const consoleInput = need('@jyeontu/img-concat');
const ImgConcatClass = ImgConcat ใหม่ ();
const พี = {
folderPath:'.\img', // ไดเรกทอรีทรัพยากร targetFolder:'.\longImg', // ทิศทางไดเรกทอรีการจัดเก็บภาพที่ผสาน: 'y' // ทิศทางประกบ, y คือแนวนอน, n คือแนวตั้ง}
// เชื่อมต่อรูปภาพทั้งหมดในไดเร็กทอรี ImgConcatClass.concatAll(p).then(res=>{
console.log(`การประกบเสร็จสมบูรณ์ เส้นทางรูปภาพคือ ${res}`);
}) เมทริกซ์การรวมรูปภาพ ส่งผ่านเส้นทางรูปภาพในแต่ละตำแหน่ง
รูปภาพที่รวม
const p = {
รูปร่าง:[['.\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']
-
เป้าหมาย:'.\longImg'
-
// รูปภาพการต่อเมทริกซ์แบบกำหนดเอง ImgConcatClass.conCatByMaxit(p).then(res=>{
console.log(`การประกบเสร็จสมบูรณ์ เส้นทางรูปภาพคือ ${res}`);
}); https://gitee.com/zheng_yongtao/node-scripting-tool/tree/master/src/imgConcat