Membuat Gambar Dari HTML Menggunakan Satori dan Resvg
TL;DR
Membuat gambar dari HTML menggunakan github.com/vercel/satori (untuk convert HTML ke SVG) dan github.com/yisibl/resvg-js (untuk convert SVG ke PNG) di Node.js dan Deno.
Contoh: github.com/anasrar/satori-resvg.
Latar belakang
Saat Vercel Introducing OG Image Generation: Fast, dynamic social card images at the Edge, dan sedikit bermain dengan @vercel/og dan menyadari bahwa hanya berkerja dengan Edge Runtime dan Saya ingin membuat script yang membuat gambar sepenuhnya statik.
Vercel menjelaskan teknikal detail dibelakang @vercel/og, yang mana menggunakan github.com/vercel/satori dan github.com/RazrFalcon/resvg.
Sekarang mari buat dari awal menggunakan Node.js and Deno.
Dependencies
Satori
Satori convert HTML ke SVG, automatically wrap teks dan menggunakan Yoga Layout sebagai layout engine.
Kelebihan
- Mendukung sintak JSX.
- Mendukung gamber (URL dan base64).
- Automatically wrap teks.
- CSS Flexbox.
Kekurangan
- Hanya mendukung JSX dan React Node.
- Explicit inline style.
- Text menjadi path.
- Fitur CSS tidak sepenuhnya terimplementasi.
Satori-html
Satori-html convert HTML ke React Node, ini karena Satori hanya mendukung React node object setidaknya untuk Node.js.
Resvg-js
Resvg-js convert SVG ke PNG, Rust-Node binding untuk github.com/RazrFalcon/resvg.
Victor Mono
Victor mono adalah font yang akan kita gunakan karena Satori perlu setidaknya 1 font sebagai default font.
Flow
Node.js
Dicoba pada node v19.0.1
.
Output

Deno
Dicoba pada deno 1.29.1
.
Output
