Hey is a decentralized and permissionless social media app built with Lens Protocol 馃尶
1import type { Area } from "react-easy-crop";
2
3const createImage = (url: string): Promise<HTMLImageElement> =>
4 new Promise((resolve, reject) => {
5 const image = new Image();
6 image.addEventListener("load", () => resolve(image));
7 image.addEventListener("error", (error) => reject(error));
8 image.src = url;
9 });
10
11const getCroppedImg = async (
12 imageSrc: string,
13 pixelCrop: Area | null
14): Promise<HTMLCanvasElement | null> => {
15 const image = await createImage(imageSrc);
16 const canvas = document.createElement("canvas");
17 const ctx = canvas.getContext("2d");
18 if (!ctx || !pixelCrop) {
19 return null;
20 }
21
22 canvas.width = image.width;
23 canvas.height = image.height;
24 ctx.drawImage(image, 0, 0);
25
26 const data = ctx.getImageData(
27 pixelCrop.x,
28 pixelCrop.y,
29 pixelCrop.width,
30 pixelCrop.height
31 );
32
33 canvas.width = pixelCrop.width;
34 canvas.height = pixelCrop.height;
35 ctx.putImageData(data, 0, 0);
36
37 return canvas;
38};
39
40export default getCroppedImg;