angular - 使用上下文和drawImage在角度客户端图像压缩上获取黑色图像
问题描述
我正在尝试从客户端压缩图像,但在 cvs = ctx.drawImage(file, 0, 0, 100, 100); 行出现错误
但是得到 1 kb 的黑色图像,需要帮助
selectImage(event: any){
if(event.target.files.length>0){
const file = event.target.files[0];
this.reader_img(file);
}
}
reader_img(file:File){
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
if(!(reader.result)){
throw new Error(`error1`)
}
var img1 = new Image();
img1.src = reader.result.toString();
var cvs = document.createElement('canvas');
var ctx=cvs.getContext("2d");
if (!(ctx)) {
throw new Error(` error2`);
}
ctx.drawImage(img1, 400, 400);
console.log(cvs.toDataURL());
};
reader.onerror = function (error) {
console.log('Error: ', error);
};
}
解决方案
您的 ctx 对象未分配,因为您没有在上面的行中分配任何内容(让 ctx: any;)。drawImage 也返回 void。图像被绘制到 CanvasRenderingContext2D 绑定到的画布上。试试这个:
var cvs = document.createElement('canvas');
let ctx = cvs.getContext("2d");
ctx.drawImage(file, 0, 0, 100, 100);
推荐阅读
- javascript - 移动设备上的vue路由器延迟
- java - 从 ArrayList 中提取特定数据
- .net - 画布过度拉伸图像元素,两者都在同一个 wpf 网格上
- python-3.x - 我需要在 DNA 字符串中搜索模式 GGG + N(1-7) + GGG + N(1-7) + GGG
- dart - 颤振动画不起作用
- wpf - WPF 将文本块绑定到父属性
- java - 遵循 OWASP 建议,在 Java 中保护简单的 JAX-WS Web 服务
- r - 按组运行回归并粘贴到原始数据框中以预测值 - 提供示例代码
- ruby-on-rails - 如何实现应该返回技能的方法
- angular - Material Angular 6 DatePicker 正在解析我的日期前 1 天