23 lines
605 B
TypeScript
23 lines
605 B
TypeScript
import * as thumbhash from "thumbhash";
|
|
|
|
export function generateThumbhash(
|
|
buffer: ArrayLike<number>,
|
|
w: number,
|
|
h: number,
|
|
) {
|
|
const hash = thumbhash.rgbaToThumbHash(w, h, buffer);
|
|
return [hash, thumbhash.thumbHashToAverageRGBA(hash)] as const;
|
|
}
|
|
|
|
export function generateDataURL(hash: string) {
|
|
const decodedString = atob(hash);
|
|
|
|
// Create Uint8Array from decoded string
|
|
const uint8Array = new Uint8Array(decodedString.length);
|
|
for (let i = 0; i < decodedString.length; i++) {
|
|
uint8Array[i] = decodedString.charCodeAt(i);
|
|
}
|
|
|
|
return thumbhash.thumbHashToDataURL(uint8Array);
|
|
}
|