Я создаю приложение Cordova, и мне нужно извлечь BLOB-объект из файла изображения и использовать его в качестве sr c тега img. Прямо сейчас изображение хранится локально, но будет извлечено из базы данных в будущем. Все работает, как и ожидалось, но источник изображения не устанавливается, когда я использую URL.createObjectURL(blob)
, кажется, что URL поврежден.
Вот мой код:
takePicture() {
// eslint-disable-next-line no-undef
const srcType = Camera.PictureSourceType.CAMERA;
const options = {
// Some common settings are 20, 50, and 100
quality: 10,
// eslint-disable-next-line no-undef
destinationType: Camera.DestinationType.FILE_URI,
// In this app, dynamically set the picture source, Camera or photo gallery
sourceType: srcType,
// eslint-disable-next-line no-undef
encodingType: Camera.EncodingType.PNG,
// eslint-disable-next-line no-undef
mediaType: Camera.MediaType.PICTURE,
allowEdit: true,
correctOrientation: true, //Corrects Android orientation quirks
};
navigator.camera.getPicture(
function cameraSuccess(imageUri) {
window.resolveLocalFileSystemURL(
imageUri,
function success(fileEntry) {
fileEntry.file(
function(file) {
const reader = new FileReader();
reader.onloadend = function() {
const blob = new Blob([new Uint8Array(this.result)], { type: 'image/png' });
const elem = document.getElementById('img');
elem.src = URL.createObjectURL(blob);
};
reader.readAsArrayBuffer(file);
},
function(e) {
alert(e);
}
);
},
function() {}
);
},
function cameraError(error) {
alert('Unable to obtain picture: ' + error, 'app');
},
options
);
Если я уберу эту строку кода: elem.src = URL.createObjectURL(blob);
и заменим ее следующим: elem.src = imageUri;
Все работает нормально, поэтому я знаю, что изображение сохраняется правильно. Возможно ли, что изображение слишком велико и поэтому отклоняется?