Skip to content

Instantly share code, notes, and snippets.

@wobsoriano
Created July 26, 2021 12:41
Show Gist options
  • Save wobsoriano/ceafa14102d7911477f3bc7d4f5b2e02 to your computer and use it in GitHub Desktop.
Save wobsoriano/ceafa14102d7911477f3bc7d4f5b2e02 to your computer and use it in GitHub Desktop.
SVG to Canvas
export default async function svgToCanvas(svgElement: SVGElement): Promise<HTMLCanvasElement> {
return new Promise((resolve, reject) => {
const { width, height } = svgElement.getBoundingClientRect();
const blob = new Blob([svgElement.outerHTML], { type:'image/svg+xml' })
const blobURL = window.URL.createObjectURL(blob)
const image = new Image()
image.onload = () => {
window.URL.revokeObjectURL(blobURL)
const canvas = document.createElement('canvas')
canvas.width = width
canvas.height = height
const ctx = canvas.getContext('2d')
ctx?.drawImage(image, 0, 0, width, height)
resolve(canvas)
}
image.onerror = () => {
reject('Unable to convert svg to canvas')
}
image.src = blobURL
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment