Tôi muốn tải lên các tệp hình ảnh, vẽ chúng vào canvas, thực hiện thay đổi và lưu nó trong cơ sở dữ liệu. Tôi đã thử kiểm tra giá trị base64 mà hình ảnh canvas (Pic
) trả lại và nó trống. Tuy nhiên, tôi thấy kết quả khi tôi thêm canvas (Pic
) vào tài liệu. Tôi làm gì sai ở đây?HTML5 Canvas toDataURL trả lại trống
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
for (var i = 0, f; f = files[i]; i++) {
if (!f.type.match('image.*')) {
continue;
}
// read contents of files asynchronously
var reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function(theFile) {
return function(e) {
var canvas = document.createElement("canvas");
var datauri = event.target.result,
ctx = canvas.getContext("2d"),
img = new Image();
img.onload = function() {
canvas.width = width;
canvas.height = height;
ctx.drawImage(img, 0, 0, width, height);
};
img.src = datauri;
var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
document.body.appendChild(canvas); //picture gets uploaded
// Generate the image data
var Pic = canvas.toDataURL("image/png");
console.log(Pic); // => returns base64 value which when tested equivalent to blank
Pic = Pic.replace(/^data:image\/(png|jpg);base64,/, "")
// Sending image to Server
$.ajax({
// …
});
};
})(f);
reader.readAsDataURL(f);
}
}
Tại sao tham số đối tượng của lệnh gọi '$ .ajax' của bạn (là' // Đang gửi hình ảnh tới Máy chủ') trống? Vui lòng thêm nhận xét nếu bạn cố ý bỏ qua một số dòng. –
Có 'console.log (Pic);' đầu ra bất cứ điều gì? – hindmost
có, nó cho một số giá trị cơ sở 64 mà tôi đã thử nghiệm về cơ bản là trống: – user3399326