function getImageData(img: HTMLImageElement): ImageData | undefined {
const canvas = document.createElement('canvas')
canvas.width = img.width
canvas.height = img.height
const ctx = canvas.getContext('2d')
if (ctx) {
ctx.drawImage(img, 0, 0)
return ctx.getImageData(0, 0, canvas.width, canvas.height)
}
}
export default async function hashImage(img: HTMLImageElement): Promise {
const imageData = getImageData(img)
if (imageData) {
const digest = await crypto.subtle.digest('SHA-256', imageData.data)
const hashArray = Array.from(new Uint8Array(digest))
return hashArray.map((b) => ('00' + b.toString(16)).slice(-2)).join('')
}
return ''
}