我能够按照一些步骤从选定的图像文件创建画布元素,然后从该画布元素创建图像。我需要这样做,所以发送到解析的图像不是一个巨大的文件。
现在我需要能够以文件的形式访问该图像并通过解析上传。 就如何访问创建的blob而言,我有点陷入困境。
考虑一下:
//upload post
$('#fileselect').bind('change', function(e) {
readURL(this);
setTimeout(function() {
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
img = new Image();
img.onload = function() {
canvas.height = canvas.width * (img.height / img.width);
/// step 1
var oc = document.createElement('canvas'),
octx = oc.getContext('2d');
oc.width = img.width * 0.5;
oc.height = img.height * 0.5;
octx.drawImage(img, 0, 0, oc.width, oc.height);
/// step 2
octx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5);
ctx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5, 0, 0, canvas.width, canvas.height);
}
img.src = $(".previewupload").attr('src');
var image2 = $('.imagereceive');
setTimeout(function() {
var canvurl = canvas.toDataURL("image/png");
image2.attr('src', canvurl);
var name = "image1.jpg"; //This does *NOT* need to be a unique name
var dataURL = canvas.toDataURL('image/jpeg', 0.5);
var blob = dataURItoBlob(dataURL);
var fd = new FormData(document.forms[0]);
fd.append("canvasImage", blob);
var file = fd;
var name = "image1.jpg"; //This does *NOT* need to be a unique name
var parseFile = new Parse.File(name, file);
$(this).attr('data-name', nameCurrent);
var imgname = $(this).attr('data-name');
$('#uploadbutton').click(function(e) {
var currentUser = Parse.User.current();
var statusupdate = $('#statusupdateform').val();
parseFile.save().then(function() {
var nameCurrent = currentUser.getUsername();
var wall = new Parse.Object("wall");
wall.set("imagefile", parseFile);
wall.save({
success: function() {
alert(parseFile.url());
},
error: function() {
alert("upload failed. please try again!");
}
});
});
});
}, 200);
}, 1000);
});
感谢您提出任何建议/帮助
已更新
通过添加以下行解决
var base64 = dataURL.split('base64,')[1];
var parseFile = new Parse.File(name, { base64: base64 });