Я перехожу к реализации запроса на межсайтовый запрос для изображения, преобразованного в базу 64 из Canvas в XMLHttpRequest и FileReader, чтобы его можно было использовать внутри веб-сайта работников. И я хочу знать, есть ли способ получить ширину и высоту изображения с самого начала.JavaScript Как получить ширину и высоту изображения из XMLHttpRequest
Новая функция
var convertFileToDataURLviaFileReader = function (url, callback) {
var xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.onload = function() {
var reader = new FileReader();
reader.onloadend = function() {
callback(reader.result);
}
reader.readAsDataURL(xhr.response);
};
// Our workaround for the Amazon CORS issue
// Replace HTTPs URL with HTTP
xhr.open('GET', url.replace(/^https:\/\//i, 'http://'));
xhr.send();
}
Наш старый Функция
var convertImgToDataURLviaCanvas = function(url, callback, outputFormat) {
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function() {
var canvas = document.createElement('CANVAS');
var ctx = canvas.getContext('2d');
var dataURL;
canvas.height = this.height;
canvas.width = this.width;
ctx.drawImage(this, 0, 0);
dataURL = canvas.toDataURL(outputFormat);
var allInfo = {
data: dataURL,
width: this.width,
height: this.height
}
// Add height and width to callback
callback(allInfo);
canvas = null;
};
// Our workaround for the Amazon CORS issue
// Replace HTTPs URL with HTTP
img.src = url.replace(/^https:\/\//i, 'http://');
}
В старой функции я могу только получить высоту и ширину с холста, и я делаю это внутри из var allInfo
. Есть ли эквивалент FileReader или какой-то способ получить ширину и высоту внутри новой функции?
Чтобы уточнить, я перехожу на XMLHttpRequest
, потому что веб-рабочие не имеют доступа к DOM, поэтому Canvas не может использоваться.
reader.result - это строка base64, да. – Erick
Я думаю, что это не сработает, потому что этот 'let preview = document.querySelector (« img »)' зависит от DOM, а веб-рабочие не имеют доступа к DOM. – Erick
Извините, я пропустил точку. Я хочу, чтобы вы анализировали строку, чтобы получить правильные размеры? Посмотрите на эти ссылки, информация, которую вы ищете, находится в заголовке http://stackoverflow.com/questions/15327959/get-height-and-width-dimensions-from-base64-png https://en.wikipedia.org/wiki/Portable_Network_Graphics – Lezard