SnapDOM มีประสิทธิภาพเหนือกว่า html2canvas ในด้านความเร็วและความแม่นยำสำหรับการจับภาพ HTML Element

ทีมชุมชน BigGo
SnapDOM มีประสิทธิภาพเหนือกว่า html2canvas ในด้านความเร็วและความแม่นยำสำหรับการจับภาพ HTML Element

ไลบรารี JavaScript ใหม่ที่ชื่อ SnapDOM กำลังสร้างความฮือฮาในชุมชนนักพัฒนาเว็บด้วยความสามารถในการจับภาพ HTML element เป็นรูปภาพที่มีความเร็วและความแม่นยำที่น่าทึ่ง เครื่องมือนี้สัญญาว่าจะแก้ไขข้อจำกัดที่มีมานานของโซลูชันที่มีอยู่เช่น html2canvas โดยมอบประสิทธิภาพที่ดีกว่าและผลลัพธ์การเรนเดอร์ที่แม่นยำกว่า

นวัตกรรมทางเทคนิคผ่าน SVG foreignObject

SnapDOM ใช้แนวทางที่เป็นเอกลักษณ์ในการจับภาพ HTML element โดยใช้ประโยชน์จากฟีเจอร์ foreignObject ของ SVG ไลบรารีนี้จะโคลน DOM element และฝังไว้ใน SVG container ซึ่งเป็นวิธีการที่ได้รับการสนับสนุนอย่างแข็งแกร่งในบราวเซอร์สมัยใหม่ เทคนิคนี้ช่วยให้เครื่องมือสามารถรักษาความคมชัดสูงเมื่อจับภาพ web element ที่ซับซ้อน รวมถึงองค์ประกอบที่มี pseudo-element, shadow DOM content และ custom web font

นักพัฒนาได้ปรับปรุงหลายอย่างเพื่อเพิ่มประสิทธิภาพ รวมถึงการสร้าง CSS class ภายในเพื่อหลีกเลี่ยง property ที่ซ้ำซ้อน และระบบแคชที่ป้องกันการประมวลผลซ้ำของ style ที่ได้จัดการไปแล้ว การปรับปรุงเหล่านี้มีส่วนสำคัญต่อข้อได้เปรียบด้านความเร็วของไลบรารีเมื่อเทียบกับโซลูชันแบบดั้งเดิม

หมายเหตุ: foreignObject เป็น SVG element ที่อนุญาตให้ฝังเนื้อหาภายนอกเช่น HTML ไว้ในเอกสาร SVG

ฟีเจอร์ที่รองรับ:

  • การจับภาพ Pseudo-elements
  • เนื้อหา Shadow DOM
  • Web fonts พร้อมตัวเลือก embedFonts
  • CSS clip-path และ mix-blend-mode
  • องค์ประกอบ Canvas
  • การจับภาพหน้าเว็บแบบเต็ม

ผลการทดสอบประสิทธิภาพแสดงข้อได้เปรียบที่ชัดเจน

การทดสอบจากชุมชนเผยให้เห็นว่า SnapDOM ไม่เพียงแต่ให้เวลาจับภาพที่เร็วกว่า แต่ยังให้ผลลัพธ์ที่แม่นยำกว่าเมื่อเทียบกับ html2canvas ผู้ใช้รายงานว่า SnapDOM สามารถทำ render time ได้เพียง 13 มิลลิวินาที ซึ่งในทางทฤษฎีเปิดโอกาสสำหรับแอปพลิเคชันแบบเรียลไทม์เช่นการจับภาพวิดีโอ 60fps จากหน้าเว็บ

การปรับปรุงความเร็วนั้นโดดเด่นเป็นพิเศษในสถานการณ์ที่ซับซ้อนที่เกี่ยวข้องกับ CSS framework, custom font และฟีเจอร์การจัดแต่งขั้นสูง ผู้ใช้รุ่นแรกสังเกตเห็นว่าในขณะที่ html2canvas บางครั้งสร้าง visual artifact ขึ้นมา SnapDOM ยังคงรักษาความแม่นยำในการเรนเดอร์ในบราวเซอร์และระบบปฏิบัติการที่แตกต่างกัน

การเปรียบเทียบประสิทธิภาพ:

  • SnapDOM: เวลาในการเรนเดอร์เพียง 13ms
  • html2canvas: ประสิทธิภาพช้ากว่าพร้อมกับปัญหาภาพผิดปกติเป็นครั้งคราว
  • ความสามารถในทางทฤษฎี: สามารถจับภาพวิดีโอ 60fps จากหน้าเว็บ

ตัวเลือกการส่งออกที่หลากหลายและการพัฒนาในอนาคต

ต่างจากไลบรารีจับภาพหลายตัวที่เน้นเฉพาะ raster image output SnapDOM ใช้รูปแบบ SVG เป็นค่าเริ่มต้นในขณะที่รองรับตัวเลือกการส่งออกหลายรูปแบบรวมถึง PNG, JPG และ WebP ความยืดหยุ่นนี้ทำให้มีคุณค่าเป็นพิเศษสำหรับการทดสอบ screenshot ของ design system component ที่รูปแบบ vector สามารถมีประสิทธิภาพมากกว่า bitmap image แบบดั้งเดิม

ผลลัพธ์การจับภาพเริ่มต้นคือ svg dataurl แต่มีตัวเลือกการส่งออกอื่นๆ อีกมากมาย ไลบรารีนี้ถูกสร้างขึ้นเป็นเครื่องมือภายในสำหรับโปรเจกต์อื่นที่ชื่อ Zumly ซึ่งเป็น zoomable engine และรูปแบบ svg เป็นผลลัพธ์ที่เร็วที่สุดที่ฉันพบ

นักพัฒนาได้วางแผนสำหรับระบบปลั๊กอินที่จะอนุญาตให้ควบคุมขั้นตอนการจับภาพทั้งหมดอย่างละเอียด ซึ่งอาจเปิดใช้งานฟีเจอร์เช่นการสร้างแอนิเมชันผ่าน burst capture sequence ความสามารถในการขยายนี้อาจทำให้ SnapDOM เหมาะสมสำหรับแอปพลิเคชันที่หลากหลายมากขึ้นนอกเหนือจากการจับภาพ element ธรรมดา

รูปแบบการส่งออก:

  • SVG (รูปแบบเอาต์พุตเริ่มต้น)
  • PNG
  • JPG
  • WebP

สรุป

SnapDOM แสดงถึงก้าวสำคัญไปข้างหน้าในเทคโนโลยีการจับภาพ web element โดยแก้ไขปัญหาทั้งประสิทธิภาพและความแม่นยำที่ทำให้โซลูชันที่มีอยู่ประสบปัญหามา ด้วยแนวทางที่เป็นนวัตกรรมใหม่แบบ SVG และสถาปัตยกรรมปลั๊กอินที่วางแผนไว้ ไลบรารีนี้ดูเหมือนจะอยู่ในตำแหน่งที่ดีที่จะกลายเป็นตัวเลือกที่นักพัฒนาชื่นชอบสำหรับความสามารถในการแปลง HTML เป็นรูปภาพที่เชื่อถือได้

อ้างอิง: SnapDOM demo gallery