Canvas Base64画布编码方法大小有限

Canvas Base64画布编码方法大小有限,canvas,base64,limit,encode,Canvas,Base64,Limit,Encode,我希望这里有人能帮忙 下面的函数正确地从我的网站上的图像创建base64字符串 如果我手动添加一个更大的b64值(从164k图像生成),它可以正常工作 <img src="data:image/jpeg;base64,/9j/4AA..... etc 但是,如果在同一个164k图像上使用此函数,则只会得到“data:,”作为输出值 画布是否限制为其可以输出的DataURL大小?如果是这样的话,用编程方式对图像进行编码的更好方法是什么 多谢各位 <script type="tex

我希望这里有人能帮忙

下面的函数正确地从我的网站上的图像创建base64字符串

如果我手动添加一个更大的b64值(从164k图像生成),它可以正常工作

 <img src="data:image/jpeg;base64,/9j/4AA..... etc

但是,如果在同一个164k图像上使用此函数,则只会得到“data:,”作为输出值

画布是否限制为其可以输出的DataURL大小?如果是这样的话,用编程方式对图像进行编码的更好方法是什么

多谢各位

<script type="text/javascript">
function imageFetch(imgpath, imgname)               
{
    imageObj = new Image();
    imageObj.src = imgpath + imgname;                                       

    var canvas = document.createElement('canvas');                      
    canvas.width = imageObj.width;                                      
    canvas.height = imageObj.height;                                    

    var canvasContext = canvas.getContext('2d');                        
    canvasContext.drawImage(imageObj, 0, 0, canvas.width, canvas.height);   

    var lenImgName = imgname.length;                                    
    var imgType = imgname.substring(lenImgName-3,lenImgName);           

    if (imgType == "jpg")                                               
    {
        base64Data = canvas.toDataURL('image/jpeg');                        
    }
    if (imgType == "png")                                               
    {
        base64Data = canvas.toDataURL('image/png');                     
    }
    return base64Data;                                                  
}

函数imageFetch(imgpath,imgname)
{
imageObj=新图像();
imageObj.src=imgpath+imgname;
var canvas=document.createElement('canvas');
canvas.width=imageObj.width;
canvas.height=imageObj.height;
var canvasContext=canvas.getContext('2d');
canvasContext.drawImage(imageObj,0,0,canvas.width,canvas.height);
var lenImgName=imgname.length;
var imgType=imgname.substring(lenImgName-3,lenImgName);
如果(imgType==“jpg”)
{
base64Data=canvas.toDataURL('image/jpeg');
}
如果(imgType==“png”)
{
base64Data=canvas.toDataURL('image/png');
}
返回基本数据;
}

正如brodney所指出的,如果画布的宽度或高度为0,则会得到此结果,这是因为在将画布大小设置为图像的宽度和高度之前,您没有等待图像加载,如果图像未完全加载,则这些属性返回0。

正如brodney所指出的,如果画布的宽度或高度为0,这是因为在将画布大小设置为图像的宽度和高度之前,您没有等待图像加载,如果图像未完全加载,这些属性将返回0。

如果画布高度或宽度为0,您将从toDataURL返回“data:”。当为该图像运行函数时,您能检查这些值是什么吗?如果画布高度或宽度为0,您将从toDataURL返回“data:”。当为该图像运行函数时,您能检查这些值是什么吗?