Я пытаюсь отобразить массив из выборки данных из базы данных, и внутри значения у меня есть поле с ссылкой на ведро amazon s3, содержащее фотографию пользователя, и я хочу, чтобы эта ссылка была преобразована в dataurl. Поэтому я пишу несколько кодов для преобразования этой ссылки в dataURL. но в то время как я вызываю функцию для преобразования этого конкретного значения в dataurl, я получаю нулевые или неопределенные данные или подписчика взамен не значения. я запутался с моим кодом, поэтому, пожалуйста, помогите мне проверить мои коды и выяснить любую ошибку в нем и выручить меня.
// поле "photoperson", где я хочу вернуть dataurl и getImage функция для конвертации amazonurl в dataURL.
if(this.searchForm.valid)
{
//document.getElementById("surveyinformationsheet").style.display = "block";
this.apiService.getSuerveyInformationSheet(this.searchForm.value.province_id,this.searchForm.value.muncipality_id,this.searchForm.value.nahia_id,this.searchForm.value.gozar_id)
.subscribe( data => {
this.tabledata= data['data'];
this.tabledataforpage=[];
this.showdiv=(this.tabledata.length>0)?true:false;
this.tabledata.map((item, index) => {
return {
dataid:item._id,
id : index,
name: item["owner_or_first_partner_info"].name,
fathername : item["owner_or_first_partner_info"].father_name,
grandfathername: item["owner_or_first_partner_info"].grandfather_name,
blockid: item["property_physical_location"].block_id,
parcelno: item["property_physical_location"].parcel_no,
unitcode: item["property_physical_location"].unit_no,
parcelarea : item["property_physical_location"].parcel_area,
photoperson: this.getImage('https://ctu-member-photo.s3.eu-west-2.amazonaws.com/Alka%20%285%29.jpg'+'?'+Math.random())
}
}).forEach(item => this.tabledataforpage.push(item));
console.log(this.tabledataforpage);
});
}
getImage(url:string) {
this.getBase64ImageFromURL(url).subscribe((data: string) => {
});
}
getBase64ImageFromURL(url: string) {
return Observable.create((observer: Observer<string>) => {
let img = new Image();
img.crossOrigin = 'Anonymous';
img.src = url;
if (!img.complete) {
img.onload = () => {
observer.next(this.getBase64Image(img));
observer.complete();
};
img.onerror = (err) => {
observer.error(err);
};
} else {
observer.next(this.getBase64Image(img));
observer.complete();
}
});
}
getBase64Image(img: HTMLImageElement) {
this.canvas = document.createElement("canvas");
this.canvas.width = img.width;
this.canvas.height = img.height;
var ctx = this.canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var dataURL = this.canvas.toDataURL("image/jpg");
return this.base64DefaultURL = dataURL;
}