如何从base64中获取图像的宽度、高度、Uint8ClampedArray

当处理基于 Base64 编码的图像数据时,您可以使用以下代码来获取图像的宽度、高度以及 Uint8ClampedArray(表示图像像素数据):

一、基于typescript的实现

 1 function base64DataURLToImageData(base64DataURL: string): Promise<ImageData> {
 2   return new Promise((resolve, reject) => {
 3     const img = new Image();
 4 
 5     img.onload = () => {
 6       const canvas = document.createElement("canvas");
 7       const context = canvas.getContext("2d");
 8       canvas.width = img.width;
 9       canvas.height = img.height;
10       if (!context) {
11         reject(new Error("context is null"));
12         return;
13       }
14       context.drawImage(img, 0, 0);
15       const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
16       resolve(imageData);
17     };
18 
19     img.onerror = (error) => {
20       reject(error);
21     };
22 
23     img.src = base64DataURL;
24   });
25 }

使用示例

 1 // 示例用法:
 2 const base64DataURL = "data:image/png;base64,iVBORw..."; // 替换为您的Base64数据URL
 3 base64DataURLToImageData(base64DataURL)
 4   .then((imageData) => {
 5     console.log("图像宽度:", imageData.width);
 6     console.log("图像高度:", imageData.height);
 7     console.log("Uint8ClampedArray:", imageData.data);
 8   })
 9   .catch((error) => {
10     console.error("处理图像时出错:", error);
11   });
1 // 提取 base64 图像数据部分
2     const imageData = await base64DataURLToImageData(base64DataURL);

二、基于javascript的实现

 1 function base64DataURLToImageData(base64DataURL) {
 2   return new Promise((resolve, reject) => {
 3     const img = new Image();
 4 
 5     img.onload = () => {
 6       const canvas = document.createElement("canvas");
 7       const context = canvas.getContext("2d");
 8       canvas.width = img.width;
 9       canvas.height = img.height;
10       if (!context) {
11         reject(new Error("context is null"));
12         return;
13       }
14       context.drawImage(img, 0, 0);
15       const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
16       resolve(imageData);
17     };
18 
19     img.onerror = (error) => {
20       reject(error);
21     };
22 
23     img.src = base64DataURL;
24   });
25 }

使用示例

 1 // 用法示例:
 2 const base64DataURL = "data:image/png;base64,iVBORw0KG..."; // 你的Base64数据URL
 3 base64DataURLToImageData(base64DataURL)
 4   .then((imageData) => {
 5     console.log("ImageData:", imageData);
 6     // 在这里可以使用ImageData进行进一步处理
 7   })
 8   .catch((error) => {
 9     console.error("Error:", error);
10   });

 

posted @ 2023-10-13 16:31  yuwenjing  阅读(197)  评论(0编辑  收藏  举报