在Angular应用程序中,我使用
Html:
<input type='file' (change)="readUrl($event)"> <img [src]="url">
Ts:
readUrl(event:any) { if (event.target.files && event.target.files[0]) { var reader = new FileReader(); reader.readAsDataURL(event.target.files[0]); reader.onload = (event: ProgressEvent) => { this.url = (<FileReader>event.target).result; } } }
到现在为止一切都很好。
但是 这里上传的图片的大小非常大,因此我需要实现预览中上传的图片的自动裁剪和自动调整大小,以便用户可以清晰地看到图片。
请帮助我取得 自动裁剪和调整大小 不使用 jquery或任何其他库 …
Stackblitz: https://stackblitz.com/edit/angular-a7ytbh
编辑:
用javascript方式尝试 https://jsfiddle.net/t3cgw65L/1/ 但这里只需要自动裁剪功能。如果我们上传一张图片,那么只会显示某些部分。如果我们上传照片,它需要显示人脸。我需要上传带有自动裁剪和调整大小的个人资料图片,如Skype个人资料图片上传。
我在jfiddle中更新了您的绘图功能:
function drawimg(idata) { var img = new Image(); img.onload = function(){ canvas.width = 300; // defalt fixed size canvas.height = this.height*canvas.width/this.width; // uploaded image aspect ratio const ctx = canvas.getContext('2d'); ctx.drawImage(img, 0,0,canvas.width,canvas.height); }; img.src = idata; }
https://jsfiddle.net/t3cgw65L/2/
如果这是你想要的,请告诉我