У меня есть холст, в который я хотел бы загрузить строку Base64, представляющую png-изображение. Однако следующий код просто отображает пустой белый ящик, и я не понимаю, почему. Когда я смотрю на данные на холсте, он выглядит идентично холсту, который получает свои данные из объекта FileReader (также ниже). Любая помощь, которая выдает эту проблему, очень ценится!Холст, в который я хотел бы загрузить строку Base64, которая представляет png-изображение, но просто отображает пустой белый квадрат
Этот код показывает белый холст:
HTML
<canvas id="canvas" width="114" height="114" style="z-index: 999999; display: none; padding-left: 50px"></canvas>
Javascript
var websiteIconData = $('#ctl00_ContentPlaceHolder1_websiteIcon');
if (websiteIconData.val() != '') {
var canvas = document.getElementById('canvas');
var ctx = document.getElementById('canvas').getContext('2d');
var loadedImg = new Image();
loadedImg.onload = function() {
ctx.drawImage(this, 0, 0);
Debugger.log(ctx);
};
loadedImg.src = websiteIconData.val();
canvas.style.display = 'block';
}
Этот код показывает изображение:
$('#loadWebsiteIcon').on({
change: function (ev) {
var reader = new FileReader();
reader.onload = function (e) {
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
var img = new Image();
img.onload = function() {
var MAX_WIDTH = 114;
var MAX_HEIGHT = 114;
var width = img.width;
var height = img.height;
if (width > MAX_WIDTH) {
width = MAX_WIDTH;
}
if (height > MAX_HEIGHT) {
height = MAX_HEIGHT;
}
ctx.drawImage(img, 0, 0, width, height);
for (var i = 0; i <= document.images.length; i++) {
}
Debugger.log(ctx);
};
img.src = e.target.result;
}
draw();
};
reader.readAsDataURL(ev.target.files[0]);
var canvas = document.getElementById('canvas');
canvas.style.display = 'block';
var imgData = canvas.toDataURL();
$('#ctl00_ContentPlaceHolder1_websiteIcon').val(imgData);
Debugger.log(imgData);
}
});
I [пытались воспроизвести и ** не мог **] (http://jsfiddle.net/FwCNn/), как вы можете видеть, появляется красная точка. Это заставляет меня думать, что либо '$ ('# ctl00_ContentPlaceHolder1_websiteIcon'). Val();' не действует, как вы ожидаете, или 'var imgData = canvas.toDataURL();' is not. 'canvas.toDataURL' иногда не будет работать, если у вас есть странные вещи, происходящие с _origin_. –
Да, проблема на самом деле заключается в захвате изображения, первый фрагмент кода действительно работает, если вы помещаете в него действительные данные. По какой-то причине следующий код не работает: var imgData = canvas.toDataURL(); $ ('# Ctl00_ContentPlaceHolder1_websiteIcon') Вал (imgData). – SomeoneElse