Files
code-box/utils/drawImages.ts
2024-09-19 09:22:27 +08:00

43 lines
1.1 KiB
TypeScript

import dayjs from "dayjs"
import { saveAs } from "file-saver"
export default function DrawImages(images, filename) {
if (images.length === 0) {
console.error("No images captured.")
return
}
const canvas = document.createElement("canvas")
const context = canvas.getContext("2d")
const firstImage = new Image()
firstImage.onload = () => {
canvas.width = firstImage.width
canvas.height = images.length * firstImage.height
let imagesLoaded = 0
const drawImageOnCanvas = (image, index) => {
context.drawImage(image, 0, index * firstImage.height)
imagesLoaded++
if (imagesLoaded === images.length) {
filename = filename || "CodeBox-page"
canvas.toBlob(function (blob) {
saveAs(
blob,
`${filename}-${dayjs().format("YYYY-MM-DD HH:mm:ss")}.png`
)
})
}
}
images.forEach((dataUrl, index) => {
const image = new Image()
image.onload = () => drawImageOnCanvas(image, index)
image.src = dataUrl
})
}
firstImage.src = images[0]
}