To use the cropper, follow these steps:
- HTML: Add an
<input type="file"> to capture the file change event and the <image-cropper> component to handle the cropping logic. - TypeScript: Import
ImageCropperComponent and its related types. Use DomSanitizer to safely display the resulting objectUrl in an <img> tag. - Workflow:
- The
fileChangeEvent updates imageChangedEvent. - The cropper reacts to
imageChangedEvent by loading the image. - The
imageCropped event provides the cropped result (as a Base64 string or a Blob) whenever the user finishes an interaction.
<input type="file" (change)="fileChangeEvent($event)" />
<image-cropper
[imageChangedEvent]="imageChangedEvent"
[maintainAspectRatio]="true"
[aspectRatio]="4 / 3"
format="png"
(imageCropped)="imageCropped($event)"
(imageLoaded)="imageLoaded($event)"
(cropperReady)="cropperReady()"
(loadImageFailed)="loadImageFailed()"
></image-cropper>
<img [src]="croppedImage" />
import { ImageCropperComponent, ImageCroppedEvent, LoadedImage } from 'ngx-image-cropper';
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
import { Component } from '@angular/core';
@Component({
standalone: true,
imports: [ImageCropperComponent]
})
export class YourComponent {
imageChangedEvent: Event | null = null;
croppedImage: SafeUrl = '';
constructor(private sanitizer: DomSanitizer) {}
fileChangeEvent(event: Event): void {
this.imageChangedEvent = event;
}
imageCropped(event: ImageCroppedEvent) {
// Use event.objectUrl for previewing via DomSanitizer
this.croppedImage = this.sanitizer.bypassSecurityTrustUrl(event.objectUrl);
// Use event.blob to upload the cropped image to a server
}
imageLoaded(image: LoadedImage) {
// Handle image loaded
}
cropperReady() {
// Handle cropper ready
}
loadImageFailed() {
// Handle load failure
}
}