【发布时间】:2020-12-18 13:00:57
【问题描述】:
我(相对)是软件开发新手,并且一直在尝试在 React 组件中显示 Base64 二进制图像。
问题:我最终试图在带有 React 组件的<img /> 标记中显示缓冲区 JPEG 图像。
使用 screenshot-desktop npm 包 (https://www.npmjs.com/package/screenshot-desktop) 捕获桌面。
screenshot() 返回一个暴露 Buffer JPEG 对象的 Promise。
根据大量帖子,我尝试将其转换为 Base64 格式,然后更新状态,以便随后可以访问 Base64 图像以将其作为 src 包含在图像标签中。
这是我的代码的关键部分:-
const screenshot = require("screenshot-desktop");
function ScreenCapturer(props) {
const [image, setImage] = useState("");
function captureCurrentScreen() {
screenshot().then((bufferedImage) => {
let base64Image = btoa(bufferedImage);
setImage(base64Image);
});
}
return (
<div >
<img className="image-holder" alt="" src={`data:image/jpeg;base64,${image}`}/>
<h3>Image Capturer</h3>
<h4>Base64Image : {image.substring(1, 20)}</h4>
<button
onClick={() => {
captureCurrentScreen();
}}
>
Capture
</button>
</div>
);
}
关键问题:-
-
通过上面的代码,我意识到初始的
src值不会显示任何内容。 -
单击按钮后,我可以显示 Base64 图像的前 20 个字符,因此我相信转换过程正在运行。按下按钮后,没有显示图像,也没有显示任何错误。
-
注意:在 chrome Bowser 中检查 devTools 时,screenshot() 生成的对象被声明为“Uint8 数组”
问题:我的理解是组件应该在设置新状态时重新渲染。我哪里错了?任何帮助将不胜感激。
【问题讨论】:
标签: javascript reactjs base64 bufferedimage react-functional-component