Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript canvas toDataURL未将base64字符串转换为真实图像_Javascript_Html_Image_Canvas_Html5 Canvas - Fatal编程技术网

Javascript canvas toDataURL未将base64字符串转换为真实图像

Javascript canvas toDataURL未将base64字符串转换为真实图像,javascript,html,image,canvas,html5-canvas,Javascript,Html,Image,Canvas,Html5 Canvas,我想创建一个函数,在选择图像并将其附加到主体后压缩图像 这是我的代码=> 图像压缩 常量压缩=函数(img_对象、质量、输出格式){ var mime_type=输出_格式; var cvs=document.createElement(“画布”); img_obj.onload=函数(){ cvs.width=img_obj.naturalWidth; cvs.height=img_obj.naturalHeight; }; var ctx=cvs.getContext(“2d”).dra

我想创建一个函数,在选择图像并将其附加到主体后压缩图像

这是我的代码=>


图像压缩
常量压缩=函数(img_对象、质量、输出格式){
var mime_type=输出_格式;
var cvs=document.createElement(“画布”);
img_obj.onload=函数(){
cvs.width=img_obj.naturalWidth;
cvs.height=img_obj.naturalHeight;
};
var ctx=cvs.getContext(“2d”).drawImage(img_obj,0,0);
var newImageData=cvs.toDataURL(mime类型,质量/100);
var result_image_obj=新图像();
结果_image_obj.src=新图像数据;
返回结果\图像\对象;
};
函数getImg(){
const src_obj=document.getElementById(“随机img”).files[0];
const newImg=新图像();
newImg.src=URL.createObjectURL(src_obj);
const compressed_img=Compress(newImg,80,src_obj.type);
document.querySelector(“body”).appendChild(压缩的\u img);
}
文档。查询选择器(“输入”)。添加的事件列表器(“更改”,getImg);
img_obj.onload()是异步的,您不能立即从中返回

const Compress=函数(img\u对象、质量、输出格式){
var mime_type=输出_格式;
var cvs=document.createElement(“画布”);
img_obj.onload=函数(){
cvs.width=img_obj.naturalWidth;
cvs.height=img_obj.naturalHeight;
var ctx=cvs.getContext(“2d”).drawImage(img_obj,0,0);
var newImageData=cvs.toDataURL(mime类型,质量/100);
var result_image_obj=新图像();
结果_image_obj.src=新图像数据;
document.querySelector(“body”).appendChild(result\u image\u obj);
};
};
函数getImg(){
const src_obj=document.getElementById(“随机img”).files[0];
const newImg=新图像();
newImg.src=URL.createObjectURL(src_obj);
const compressed_img=Compress(newImg,80,src_obj.type);
}
文档。查询选择器(“输入”)。添加的事件列表器(“更改”,getImg)

这并不能解决您的所有问题,但请注意,
img_obj.onload
是“异步”的,因此在该范围之外跟随它的代码将在映像加载之前立即执行。@GetSet谢谢,我不知道onload是异步的。