【发布时间】:2024-04-25 12:35:01
【问题描述】:
我希望这里有人可以提供帮助。
下面的函数正确地从我网站上的图像创建 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;
}
【问题讨论】:
-
如果画布的高度或宽度为 0,您将从 toDataURL 获得“数据:”。当为该图像运行函数时,您可以检查这些值是什么吗? developer.mozilla.org/en-US/docs/DOM/HTMLCanvasElement
标签: canvas base64 limit encode