npm i ngx-image-cropper
app.module.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; import { HelloComponent } from './hello.component'; import { ImageCropperModule } from 'ngx-image-cropper'; @NgModule({ imports: [ BrowserModule, FormsModule, ImageCropperModule ], declarations: [ AppComponent, HelloComponent ], bootstrap: [ AppComponent ] }) export class AppModule { } |
app.component.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import { Component } from '@angular/core'; import { ImageCroppedEvent } from 'ngx-image-cropper'; @Component({ selector: 'my-app', templateUrl: './app.component.html', styleUrls: [ './app.component.css' ] }) export class AppComponent { name = 'Angular'; imageChangedEvent: any = ''; croppedImage: any = ''; fileChangeEvent(event: any): void { console.log(event.target.files[0]); this.imageChangedEvent = event; } imageCropped(event: ImageCroppedEvent) { this.croppedImage = event.base64; const blobFile = event.file; console.log(blobFile) console.log(new window.File([blobFile], blobFile.name, {type: blobFile.type})) } imageLoaded() { // show cropper } loadImageFailed() { // show message } } |
app.component.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<hello name="{{ name }}"></hello> <p> Start editing to see some magic happen :) </p> <input type="file" (change)="fileChangeEvent($event)" /> <image-cropper [imageChangedEvent]="imageChangedEvent" [maintainAspectRatio]="true" [aspectRatio]="1" [resizeToWidth]="128" format="png" outputType="both" (imageCropped)="imageCropped($event)" (imageLoaded)="imageLoaded()" (loadImageFailed)="loadImageFailed()" ></image-cropper> <img [src]="croppedImage" /> |
FULL SOURCE CODE