TGViewer
Web Overflow 🇺🇦 Web Overflow 🇺🇦 @web_overflow · 3.82K subscribers
Post #1314 3.62K
WebP to PNG 🥴

У нашому проєкті виникла потреба генерувати PDF-файли. Для цього ми використовуємо бібліотеку react-pdf - інструмент для створення PDF. Працювати над таким типом завдань — це ще той квест, тому краще оминайте такі задачі.

Нам потрібно вставляти динамічні зображення (на даний момент підтримуємо лише JPG, PNG та WebP). Ми розчарувалися, коли виявилося, що PDF не підтримує формат WebP, а обробка таких зображень була надзвичайно необхідною.

Тому ми обрали, мабуть, найпростішу та найшвидшу стратегію — відмалювати WebP-зображення на canvas і отримати з нього PNG. Виглядає код приблизно так:


function toPNGUsingCavas(src: string) {
const image = new Image()

const { promise, resolve, reject } = Promise.withResolvers<string>()

image.onload = function () {
const canvas = document.createElement('canvas')
canvas.width = image.naturalWidth
canvas.height = image.naturalHeight

const context = canvas.getContext('2d')
if (!context) {
reject(new Error('Could not get canvas context'))
} else {
context.drawImage(image, 0, 0)
resolve(canvas.toDataURL('image/png'))
}
}

image.onerror = reject

image.src = src

return promise
}


Тут, до речі, можете побачити приклад використання Promise.withResolvers, про який ми розповідали раніше.

#experience
  • 👍 17
  • 🔥 2
  • ❤ 1
More from @web_overflow
  1. Sep 9, 2026Як вам жабка за 2к? 😁
  2. Aug 24, 202635 років Незалежності України 🇺🇦 Сьогодні хочеться просто побажати нам берегти своє, цін…
  3. Aug 3, 2026Трохи випали з ефіру, але не переживайте, у нас усе стабільно: Юра багато працює, а Настя…
  4. Jul 1, 2026До кінця тижня ми не знаємо хто цей ваш АІ 🌿
  5. Jun 19, 2026Не оновлюйте поки свою версію Node.js 😳 Зарелізив я, значить, учора 2 UI-апдейти, після я…
  6. Jun 12, 2026scrollbar-gutter 📜 Нещодавно пофіксив "ui-glitch" за допомогою overflow-y: scroll, і чере…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →