typescript - 为什么我无法在数组 ionic 3 中获得完整的 base64 字符串?
问题描述
我的代码是:
for (let i in serviceData) {
// for(let i=0; i< this.adviceArray.length; i++) {
console.log("online advices", serviceData[i]);
this.texto = serviceData[i].texto;
console.log("check online this.texto ", this.texto );
this.imagen = serviceData[i].imagen;
console.log("check online this.imagen", this.imagen);
this.convertToDataURLviaCanvas(serviceData[i].imagen, "image/jpeg").then(base64 => {
console.log("online base64", base64);
this.base64Image = base64;
console.log("online this.base64Image", this.base64Image);
// this.adviceArrays64.push({'texto': this.texto, 'imagen': this.base64Image});
});
console.log("outer online this.base64Image", this.base64Image);
this.adviceArrays64.push({'texto': this.texto, 'imagen': this.base64Image});
console.log("online this.adviceArrays64", this.adviceArrays64);
this.storage.set("travelTips64", this.adviceArrays64);
}
但没有获得所有图像的完整 base64 字符串。
如何在数组内的 base64 字符串中转换图像 url 并以离线模式 ionic 3 显示所有转换后的图像?
请尽快给我解决方案。
解决方案
使用以下功能解决了上述问题,
convertToDataURLviaCanvas(url, outputFormat) {
return new Promise((resolve, reject) =>
{
let img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function () {
let canvas = <HTMLCanvasElement>document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
dataURL;
canvas.height = 1000;
canvas.width = 1000;
ctx.drawImage(img, 0, 0);
dataURL = canvas.toDataURL();
//callback(dataURL);
canvas = null;
resolve(dataURL);
};
img.src = url;
});
}
当您想从数组转换图像时,请在数组中调用该函数,如下所示:
let base64Image;
for (let i in serviceData) {
this.imagen = serviceData[i].imagen;
this.convertToDataURLviaCanvas(this.imagen, "image/jpeg").then(base64 => {
base64Image = base64;
this.texto = serviceData[i].texto;
this.adviceArrays64.push({'texto': this.texto, 'imagen': base64Image});
this.storage.set("travelTips64Image", this.adviceArrays64);
});
}
推荐阅读
- mongodb - How to guarantee unique primary key with one update query
- c# - WPF Treeview绑定多个不同的列表
- mysql - @SqlResultSetMapping is not working with date field
- file-upload - Yii2:如何显示文件上传进度?
- php - 如何设置 Sparkpost smtp
- symfony - Symfony 4 EasyAdmin 如何加密密码?
- javascript - 如何在复选框打勾时将一个文本框中输入的数据显示到另一个文本框?
- sql - SQL 使用先前记录列获取 x 先前记录
- wordpress - get_the_ID() 函数在 init 钩子函数中不返回帖子 ID
- sql-server - AOT 数据字典表中的派生表未反映在 SQL Server 数据库表中