javascript - 为什么画布会加倍图像的大小?
问题描述
我试图从file input
使用压缩图像canvas
。我在这里阅读了答案,有人说画布使文件变大,有人用它来压缩图像,因为我是新手:
function compressImg(img){
var canvas=document.createElement("canvas");
var ctx=canvas.getContext("2d");
canvas.width=img.width/2;
canvas.height=img.height/2;
ctx.drawImage(img,0,0,canvas.width,canvas.height);
document.getElementById("imagePreview0").src = canvas.toDataURL();
const data = ctx.canvas.toDataURL(img, "image/jpeg", 0.1);
console.log("size2",data.length);
}
var img = new Image();
img.onload = function(){
console.log("size1",file.length);
compressImg(img);
};
img.src = file;
对于mac说1.7M的图像,我得到
大小1 2,318,839
大小2 4,702,282。
那么 - 你真的可以压缩图像吗?
我只需要将文件大小减小到2M 以下。
解决方案
更改以下行:
const data = ctx.canvas.toDataURL(img, "image/jpeg", 0.1);
至:
const data = canvas.toDataURL("image/jpeg", 0.1);
推荐阅读
- jquery - jQuery:将选择选项列表转换为复选框列表而不使用多个?
- python - 有没有办法让十字形的所有边缘都弯曲?
- javascript - 使用 onClick 从列表中删除单个项目
- android - 在后台使用应用程序时使用导航组件时从通知导航
- groovy - 读取脚本文件时,Mulesoft Groovy 脚本权限被拒绝
- debugging - 使用“cl”调用链接器忽略调试信息
- reactjs - 在 React Native Paper 中更改 TextInput 的文本颜色 - 仅用于一个单词
- nginx - 关于将域链接到服务器的超级基本问题
- excel - 使用 .formula 时出现 VBA 运行时错误“1004”
- c - 从字符缓冲区复制时,memcpy 返回垃圾数据