20 lines
647 B
TypeScript
20 lines
647 B
TypeScript
|
|
import { encode } from 'blurhash';
|
||
|
|
|
||
|
|
export const MATRIX_BLUR_HASH_PROPERTY_NAME = 'xyz.amorgan.blurhash';
|
||
|
|
|
||
|
|
export const encodeBlurHash = (
|
||
|
|
img: HTMLImageElement | HTMLVideoElement,
|
||
|
|
width?: number,
|
||
|
|
height?: number
|
||
|
|
): string | undefined => {
|
||
|
|
const canvas = document.createElement('canvas');
|
||
|
|
canvas.width = width || img.width;
|
||
|
|
canvas.height = height || img.height;
|
||
|
|
const context = canvas.getContext('2d');
|
||
|
|
|
||
|
|
if (!context) return undefined;
|
||
|
|
context.drawImage(img, 0, 0, canvas.width, canvas.height);
|
||
|
|
const data = context.getImageData(0, 0, canvas.width, canvas.height);
|
||
|
|
return encode(data.data, data.width, data.height, 4, 4);
|
||
|
|
};
|