Исправлена блокировка потока при вставке изображений, оптимизирован код и ответственность
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import { MantineColor } from "@mantine/core";
|
||||
import { MESSAGE_MAX_TIME_TO_DELEVERED_S } from "../constants";
|
||||
import { decode, encode } from "blurhash";
|
||||
|
||||
export function generateRandomKey(length: number): string {
|
||||
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
@@ -243,47 +242,3 @@ export function isImage(blob : string) : boolean {
|
||||
}
|
||||
return blob.startsWith('data:image/');
|
||||
}
|
||||
|
||||
export function blurhashToBase64Image(blurhash: string, width: number, height: number): string {
|
||||
const pixels = decode(blurhash, width, height);
|
||||
const canvas = document.createElement('canvas');
|
||||
canvas.width = width;
|
||||
canvas.height = height;
|
||||
const ctx = canvas.getContext('2d');
|
||||
const imageData = ctx?.createImageData(width, height);
|
||||
if (imageData) {
|
||||
imageData.data.set(pixels);
|
||||
ctx?.putImageData(imageData, 0, 0);
|
||||
return canvas.toDataURL();
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
export function base64ImageToBlurhash(base64Image: string): Promise<string> {
|
||||
const img = new Image();
|
||||
const canvas = document.createElement('canvas');
|
||||
const ctx = canvas.getContext('2d');
|
||||
|
||||
return new Promise<string>((resolve, reject) => {
|
||||
img.onload = () => {
|
||||
canvas.width = img.width;
|
||||
canvas.height = img.height;
|
||||
ctx?.drawImage(img, 0, 0);
|
||||
const imageData = ctx?.getImageData(0, 0, canvas.width, canvas.height);
|
||||
if (imageData) {
|
||||
const blurhash = encode(
|
||||
imageData.data,
|
||||
imageData.width,
|
||||
imageData.height,
|
||||
4,
|
||||
4
|
||||
);
|
||||
resolve(blurhash);
|
||||
} else {
|
||||
reject('Failed to get image data from canvas.');
|
||||
}
|
||||
};
|
||||
img.onerror = (error) => reject(error);
|
||||
img.src = base64Image;
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user