You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将react-camera-pro拍摄的图片转换为字节数组?

解决react-camera-pro拍摄图片转字节数组的问题

首先,react-camera-pro的takePhoto()方法返回的是Data URL格式的图片字符串(比如data:image/png;base64,iVBORw0KGgo...),要转成字节数组(Uint8Array),可以按以下步骤实现:

实现思路

  • 剥离Data URL的前缀,提取纯base64编码字符串
  • 将base64字符串解码为二进制原始数据
  • 把二进制数据转换为Uint8Array类型的字节数组

修改后的完整代码

import { useRef, useState } from 'react';
import { Camera } from 'react-camera-pro';
import Button from '你的Button组件路径';

function CameraComponent() {
  const camera = useRef(null);
  const [image, setImage] = useState(null);
  const [imageBytes, setImageBytes] = useState(null); // 存储转换后的字节数组

  const handleTakePhoto = () => {
    const photoDataUrl = camera.current.takePhoto();
    setImage(photoDataUrl); // 保留图片预览逻辑

    // 执行字节数组转换
    // 1. 拆分Data URL,获取base64部分
    const base64Content = photoDataUrl.split(',')[1];
    // 2. 解码base64为二进制字符串
    const binaryString = atob(base64Content);
    // 3. 转换为Uint8Array字节数组
    const byteArray = new Uint8Array(binaryString.length);
    for (let i = 0; i < binaryString.length; i++) {
      byteArray[i] = binaryString.charCodeAt(i);
    }
    setImageBytes(byteArray);
    console.log('转换后的字节数组:', byteArray);
  };

  return (
    <div>
      <Camera ref={camera} facingMode='environment' aspectRatio={1 / 1}/>
      <img src={image} alt='Taken photo' />
      <Button type='secondary' onClick={handleTakePhoto}>拍照</Button>
    </div>
  );
}

export default CameraComponent;

关键说明

  • atob()是浏览器原生的base64解码函数,若在Node.js环境中,可替换为Buffer.from(base64Content, 'base64')来获取字节数据
  • 最终得到的imageBytes就是标准的Uint8Array字节数组,可直接用于文件上传、本地存储等后续操作

内容的提问来源于stack exchange,提问作者Surbhi Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:42:36