Images

Images

หน้านี้ครอบคลุมการวางภาพราสเตอร์บนหน้า, การตรวจสอบภาพที่ฝังไว้แล้วในเอกสาร, และการลดขนาดของภาพเหล่านั้น. สำหรับการเรนเดอร์เป็นภาพ, ดู page เป็นภาพ, ดู Conversion.


การฝังรูปภาพ

Page.AddImage() วางไบต์ของรูปภาพ JPEG, PNG, BMP, หรือ TIFF ลงในสี่เหลี่ยมผืนผ้าที่แม่นยำระดับพิกเซลบนหน้า.

// Source is 1280x1014; scaled to 60% of the page width, aspect preserved.
const srcW = 1280;
const srcH = 1014;
const imgW = pageWidth(page) * 0.6;
const imgH = (imgW * srcH) / srcW;
const x = (pageWidth(page) - imgW) / 2;
const y = (pageHeight(page) - imgH) / 2;

page.AddImage(imageBytes, [x, y, x + imgW, y + imgH]);

AddImageOptions ยอมรับ opacity, format ชัดเจนเมื่อไม่สามารถสังเกตจากไบต์, tag (เป็น StructElement เพื่อผูกรูปภาพในเอกสารที่มีแท็ก), และ layer สำหรับเนื้อหาแบบเลือกได้.


การตรวจสอบรูปภาพที่ฝังอยู่

Page.Images แสดงรายการรูปภาพทั้งหมดที่อยู่บนหน้าเป็น ImageInfo[], โดยไม่ถอดรหัสข้อมูลพิกเซลใด ๆ — รายการแต่ละรายการเปิดเผย Width, Height, Bits, ColorSpace, และ Filter. เรียก Decode() บน ImageInfo เพื่อรับไบต์ตัวอย่างดิบของมัน, Replace() เพื่อสลับข้อมูลรูปภาพใหม่ในที่เดิม, หรือ Remove() เพื่อลบออกจากหน้า.

for (const img of page.Images) {
  console.log(img.Width, img.Height, img.ColorSpace, img.Filter);
}

การเพิ่มประสิทธิภาพรูปภาพ

Document.Optimize() ลดขนาดไฟล์ทั่วทั้งเอกสาร; ส่งตัวเลือก images (เช่น OptimizeImageOptions, พร้อมฟิลด์ dpi และ quality) เพื่อทำการลดความละเอียดและเข้ารหัสใหม่ของภาพที่ฝังอยู่ในขั้นตอนเดียวกัน.

const report = doc.Optimize({ images: { dpi: 150, quality: 80 } });

เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด

  • Page.Images อ่านเมตาดาต้าเท่านั้น — การถอดรหัสข้อมูลพิกเซลเต็มของทุกรูปภาพด้วย Decode() ล่วงหน้าไม่จำเป็นหากคุณต้องการเพียงมิติหรือสีสเปซ.
  • ส่งค่า format อย่างชัดเจนใน AddImageOptions เมื่อไบต์ต้นทางมาจากสตรีมหรือบัฟเฟอร์ที่ไม่มีส่วนขยายไฟล์ที่เชื่อถือได้สำหรับการตรวจสอบ.
  • ใช้ Document.Optimize({ images: { dpi, quality } }) เพื่อลดขนาดเอกสารที่มีรูปภาพหลายรูป แทนการถอดรหัสและเพิ่มแต่ละรูปแบบด้วยตนเอง.
  • สี่เหลี่ยมของ Page.AddImage() กำหนดขนาดที่วางโดยตรง — ปรับสเกลสี่เหลี่ยมเป้าหมายให้สอดคล้องกับอัตราส่วนของภาพต้นทางเพื่อหลีกเลี่ยงการยืดรูป.

ปัญหาทั่วไป

ปัญหาสาเหตุวิธีแก้
ภาพดูถูกยืดหรือบีบอัดเป้าหมาย rect ที่ส่งไปยัง AddImage() ไม่ตรงกับอัตราส่วนภาพของแหล่งต้นฉบับคำนวณความกว้าง/ความสูงของสี่เหลี่ยมจากมิติของภาพต้นฉบับเอง
Page.AddImage() ใส่รูปแบบที่ไม่ถูกต้องไม่สามารถตรวจจับรูปแบบของไบต์ภาพได้อย่างเชื่อถือได้ส่ง format อย่างชัดเจนใน AddImageOptions
เอกสารมีขนาดใหญ่กว่าที่คาดหลังจากเพิ่มรูปภาพรูปภาพถูกฝังในความละเอียดและคุณภาพเต็มที่เรียก Document.Optimize({ images: { dpi, quality } }) เพื่อทำการลดความละเอียดและเข้ารหัสใหม่

FAQ

ฉันจะใส่รูปภาพลงในหน้าอย่างไร?

เรียก page.AddImage(imageBytes, rect) โดยที่ rect คือสี่เหลี่ยม [x0, y0, x1, y1] ในหน่วยจุดของพื้นที่หน้า.

ฉันจะทำรายการรูปภาพที่อยู่บนหน้าแล้วโดยไม่ต้องถอดรหัสได้อย่างไร?

อ่าน page.Images — ImageInfo[] ที่เปิดเผย Width, Height, ColorSpace และ Filter สำหรับแต่ละรูปภาพโดยไม่ถอดรหัสข้อมูลพิกเซล.

ฉันสามารถลดขนาดไฟล์ของเอกสารโดยการบีบอัดรูปภาพได้หรือไม่?

ใช่ — เรียก Document.Optimize({ images: { dpi, quality } }) ซึ่งจะทำการลดความละเอียดและเข้ารหัสใหม่ของรูปภาพที่ฝังอยู่เป็นส่วนหนึ่งของการปรับแต่งทั่วทั้งเอกสาร.

การฝังรูปภาพแตกต่างจากการเรนเดอร์หน้าเป็นรูปภาพอย่างไร?

Page.AddImage() วางไบต์ของภาพแรสเตอร์ลงบนหน้าที่มีอยู่. Page.ToImage() (ดู Conversion) ทำการย้อนกลับ — การแสดงผลทั้งหน้าเป็นไบต์ PNG.


API Reference สรุป

คลาส/เมธอดคำอธิบาย
Page.AddImage()วางไบต์ของรูปภาพลงในสี่เหลี่ยมบนหน้า
AddImageOptionsตัวเลือกสำหรับ AddImage(): opacity, format, tag, layer
Page.Imagesรูปภาพทุกภาพที่มีอยู่แล้วบนหน้า, เป็น ImageInfo[] แบบเมตาดาต้าเท่านั้น
ImageInfo.Decode() / Replace() / Remove()อ่านข้อมูลพิกเซล, สลับไบต์ใหม่, หรือเอาภาพออก
Document.Optimize()ลดขนาดไฟล์ของเอกสารทั้งหมด, โดยสามารถทำการลดความละเอียดของภาพผ่าน images: { dpi, quality }

ดูเพิ่มเติม

 ภาษาไทย