在 angular/electron 应用程序上将图像转换为 base64 URI
Converting an image to base64 URI on a angular/electron app
所以我正在构建一个 angular/electron 桌面应用程序,我需要将图像转换为 base64 URI,我的图像位于 assets/logo/logo.png
并且我正在向同路径获取图片如下:
this.http
.get('/assets/logo/logo.png', { responseType: 'blob' })
.subscribe((data) => {
const reader = new FileReader();
reader.onloadend = () => {
var base64data = reader.result;
this.logo = base64data;
};
reader.readAsDataURL(data);
});
这在浏览器上有效,但在我构建 Electron 应用程序时不起作用,并且出现以下错误:
main.4a1ed7a….js:1 ERROR
jB
error: ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …}
headers: YB {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}
message: "Http failure response for /assets/logo/logo.png: 0 Unknown Error"
name: "HttpErrorResponse"
ok: false
status: 0
statusText: "Unknown Error"
url: "/assets/logo/logo.png"
__proto__: TB
有没有其他方法可以在不向资产目录发出 http 请求的情况下加载图像?
我不太了解电子和节点,我不知道 FileReader
这个东西是如何工作的(是节点?电子?还是这个:https://developer.mozilla.org/en-US/docs/Web/API/FileReader?也许可以在问题)。但正如它的名字所暗示的,它可能读取 files,但你想向它传递一个 blob,这不是文件。另外,我怀疑 readAsDataURL
方法不需要参数,它可能只是读取 FileReader
已经初始化的文件。
一个实际的解决方案可能是使用 btoa
方法,它可以对 base64 进行编码。如果您对 blob(订阅中的 data
变量)进行编码,您也许可以使用该值创建数据 url。
所以我试图修复这个错误,我想出了一个简单的解决方案,我正在向 assets/logo/logo.png
发出 GET HTTP 请求,它在浏览器上运行良好,但是当我在 electron 上构建应用程序时我收到一个错误,然后我想知道如果我向 ./assets/logo/logo.png
发出请求并且成功了怎么办!!我不确定它为什么起作用,但我想是因为电子的工作方式。
所以我正在构建一个 angular/electron 桌面应用程序,我需要将图像转换为 base64 URI,我的图像位于 assets/logo/logo.png
并且我正在向同路径获取图片如下:
this.http
.get('/assets/logo/logo.png', { responseType: 'blob' })
.subscribe((data) => {
const reader = new FileReader();
reader.onloadend = () => {
var base64data = reader.result;
this.logo = base64data;
};
reader.readAsDataURL(data);
});
这在浏览器上有效,但在我构建 Electron 应用程序时不起作用,并且出现以下错误:
main.4a1ed7a….js:1 ERROR
jB
error: ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …}
headers: YB {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}
message: "Http failure response for /assets/logo/logo.png: 0 Unknown Error"
name: "HttpErrorResponse"
ok: false
status: 0
statusText: "Unknown Error"
url: "/assets/logo/logo.png"
__proto__: TB
有没有其他方法可以在不向资产目录发出 http 请求的情况下加载图像?
我不太了解电子和节点,我不知道 FileReader
这个东西是如何工作的(是节点?电子?还是这个:https://developer.mozilla.org/en-US/docs/Web/API/FileReader?也许可以在问题)。但正如它的名字所暗示的,它可能读取 files,但你想向它传递一个 blob,这不是文件。另外,我怀疑 readAsDataURL
方法不需要参数,它可能只是读取 FileReader
已经初始化的文件。
一个实际的解决方案可能是使用 btoa
方法,它可以对 base64 进行编码。如果您对 blob(订阅中的 data
变量)进行编码,您也许可以使用该值创建数据 url。
所以我试图修复这个错误,我想出了一个简单的解决方案,我正在向 assets/logo/logo.png
发出 GET HTTP 请求,它在浏览器上运行良好,但是当我在 electron 上构建应用程序时我收到一个错误,然后我想知道如果我向 ./assets/logo/logo.png
发出请求并且成功了怎么办!!我不确定它为什么起作用,但我想是因为电子的工作方式。