canvas.toDataUrl返回空,画布大小不为零

时间:2013-09-18 06:15:01

标签: javascript html5

我在html5中编写需要在手机上工作的应用, 这个应用程序将图像从手机上传到我公司的服务器。 现在它在Android和计算机上工作,在Iphone上它的工作只有当我在前置摄像头拍照时,如果我从后置摄像头得到一张照片我得​​到空数据。

我创建了一个InputElement类型文件, 和输入元素的事件onChange,调用获取ElementEvent el的函数inputFile_onChange:

    var file = el.target.files[0];
    var reader = new FileReader();
    reader.onloadend = (function(theFile) {return function(e) {
    $('#uploadImage').attr('src',e.target.result);
    $('#uploadImage').css('display','none');
    $($('#uploadImage')[0]).one('load',function(){
    var cvs = document.createElement('canvas');
    $image = $('#uploadImage')[0];
    var savingCanvas = document.createElement('canvas');
    savingCanvas.width = $image.naturalWidth;
    savingCanvas.height = $image.naturalHeight;
    var savingCanvasCtx = savingCanvas.getContext('2d');
    FileUploadApp._globals.drawImage(savingCanvasCtx, $image, 0, 0,    
    savingCanvas.width,savingCanvas.height);
    var newImageData = savingCanvas.toDataURL('image/jpeg', 0.2);
    }).each(function() {if(this.complete) $(this).load();});
     };
    })(file);
    reader.readAsDataURL(file);

我在newImageData创建后发出警告并获取“data:”,当我在网上寻找答案时,我看到如果画布尺寸为0,我会得到这个,但我也打印尺寸 - 宽度和高度,两者都是他们是大> 1000

我很高兴能得到一些帮助。

1 个答案:

答案 0 :(得分:3)

我发现了问题, 当画布很大时,函数canvas.toDataURL什么都不返回, 我将画布缩小到1000像素,问题解决了