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

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

一、基于typescript的实现


function base64DataURLToImageData(base64DataURL: string): Promise<ImageData> {
  return new Promise((resolve, reject) => {
    const img = new Image();

    img.onload = () => {
      const canvas = document.createElement("canvas");
      const context = canvas.getContext("2d");
      canvas.width = img.width;
      canvas.height = img.height;
      if (!context) {
        reject(new Error("context is null"));
        return;
      }
      context.drawImage(img, 0, 0);
      const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
      resolve(imageData);
    };

    img.onerror = (error) => {
      reject(error);
    };

    img.src = base64DataURL;
  });
}

使用示例

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

二、基于javascript的实现

function base64DataURLToImageData(base64DataURL) {
  return new Promise((resolve, reject) => {
    const img = new Image();

    img.onload = () => {
      const canvas = document.createElement("canvas");
      const context = canvas.getContext("2d");
      canvas.width = img.width;
      canvas.height = img.height;
      if (!context) {
        reject(new Error("context is null"));
        return;
      }
      context.drawImage(img, 0, 0);
      const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
      resolve(imageData);
    };

    img.onerror = (error) => {
      reject(error);
    };

    img.src = base64DataURL;
  });
}

使用示例

// 用法示例:
const base64DataURL = "data:image/png;base64,iVBORw0KG..."; // 你的Base64数据URL
base64DataURLToImageData(base64DataURL)
  .then((imageData) => {
    console.log("ImageData:", imageData);
    // 在这里可以使用ImageData进行进一步处理
  })
  .catch((error) => {
    console.error("Error:", error);
  });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值