如何在 Electron 中为 Buffer 图像设置窗口图标?

问题描述 投票:0回答:2

我有一张图像存储在缓冲区中。我试图将其设置为窗口图标,但我找不到方法。没有图像的路径,所以我不能只使用

win.setIcon('path/to/image')

我尝试执行以下操作,但没有成功。

win.setIcon(buffer); // giving the buffer by itself
win.setIcon(buffer.toString('base64')); // giving the buffer as base64
win.setIcon(`data:image/png;base64,${buffer.toString('base64')}`); // giving as base64 url

let imageObject = new Image();
imageObject.src = `data:image/png;base64,${buffer.toString('base64')}`;
win.setIcon(imageObject); // giving image object
javascript electron icons
2个回答
0
投票

根据 Electron 的文档

BrowserWindow.setIcon ()
采用字符串或
NativeImage
(Electron 提供的数据类型)。您可以使用以下代码将缓冲区转换为
NativeImage

const { nativeImage } = require ("electron");

win.setIcon (nativeImage.createFromBuffer (buffer));

如果这没有帮助,您还可以将缓冲区作为数据 URL 中的 Base 64 字符串(就像您之前尝试过的那样)传递给函数

createFromDataURL
。有关更多信息,请参阅 NativeImage
 上的 
文档。还值得注意的是,您可以将高级选项传递给
createFromBuffer
函数,以便为 Electron 提供有关如何显示图标的更多提示。


0
投票

在尝试将 base64 图像显示为 Electron 图标时,我遇到了同样的问题,但设法使用以下方法修复它:

const { nativeImage } = require ("electron");
cont asset = buffer.toString('base64');

win.setIcon(nativeImage.createFromDataURL(`data:image/png;base64,${asset}`));
// or directly set it on the createWindow function as
icon: nativeImage.createFromDataURL(`data:image/png;base64,${asset}`),

有关更多信息,请查看 NativeImage 上的文档。

© www.soinside.com 2019 - 2024. All rights reserved.