如何从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 });
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY