import { toCanvas } from "./toCanvas" let canvasSource!: HTMLCanvasElement export async function checkImgDark(img: HTMLImageElement, each?: (img: HTMLImageElement) => void) { if (!canvasSource) canvasSource = document.createElement("canvas") let ctx = canvasSource.getContext("2d") if (!ctx) throw new Error("[checkImgDark] canvas.getContext;") const R = 2 canvasSource.width = R canvasSource.height = R await toCanvas(img, canvasSource, { useCanvasSize: true, clear: true }) let imageData = ctx.getImageData(0, 0, R, R) imageData.data let gVals = [] for (let i = 0; i < 4; i++) { let start = i * 4 let r = imageData.data[start] let g = imageData.data[start + 1] let b = imageData.data[start + 2] let a = imageData.data[start + 3] let gVal = r * 0.299 + g * 0.587 + b * 0.114 // console.log("checkImgDark", { r, g, b, a, gVal }) if (a > 0) { gVals.push(gVal) } } let agVal = gVals.reduce((a, b) => a + b, 0) / gVals.length let isDark = agVal < 200 // console.log("checkImgDark", { isDark, agVal, gVals }, imageData.data) if (each) each(img) return isDark }