ng7-pica
ng7-pica is an Angular 6 module to resize images files in browser using pica - high quality image resize in browser.
Install
- Add
ng7-pica
module as dependency to your project.
$ npm install ng7-pica --save
- Include
NgxPicaModule
into your main AppModule or in module where you will use it.
// app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { NgxPicaModule } from 'ng7-pica';
@NgModule({
imports: [
BrowserModule,
NgxPicaModule
],
declarations: [ AppComponent ],
exports: [ AppComponent ]
})
export class AppModule {}
Services
- NgxPicaService - Manipulate images using pica - high quality image resize in browser
- NgxPicaImageService - Supplementary services to help you work with images
NgxPicaService Methods
.resizeImages(files: File[], width: number, height: number, options?: NgxPicaResizeOptionsInterface): Observable<File>
This method resize an array of images doing it sequentially to optimize CPU and memory use.
- files:[] - Array of images to resize
- width - Width to be resized (px)
- height - Height to be resized (px)
- options - Based on pica - resize options, we've also added aspect ratio options:
- keepAspectRatio - Set true to ensure the aspect ratio of the image is maintained as it get resized
- forceMinDimensions - Set true to ensure the dimensions of image resized will be greater than width and height values defined
The Observable receives a next on every file that has been resized. If something goes wrong the Observable receive an error.
All errors are wrapped by NgxPicaErrorInterface.
.resizeImage(file: File, width: number, height: number, options?: NgxPicaResizeOptionsInterface): Observable<File>
Same as above but only takes one file instead of an array of files.
.compressImages(files: File[], sizeInMB: number): Observable<File>
This method compress an array of images doing it sequentially to optimize CPU and memory use.
- files:[] - Array of images to resize
- sizeInMB - File size in MegaBytes
The Observable receives a next on every file that has been resized. If something goes wrong the Observable receive an error.
All errors are wrapped by NgxPicaErrorInterface.
.compressImage(file: File, sizeInMB: number): Observable<File>
Same as above but only takes one file instead of an array of files.
NgxPicaImageService Methods
.isImage(file: File): boolean
This method check if a file is an image or not
Data Structures
export interface AspectRatioOptions {
keepAspectRatio: boolean;
forceDimensions?: boolean;
}
export interface NgxPicaResizeOptionsInterface {
aspectRatio?: AspectRatioOptions;
quality?: number;
alpha?: boolean;
unsharpAmount?: number;
unsharpRadius?: number;
unsharpThreshold?: number;
}
export enum NgxPicaErrorType {
NO_FILES_RECEIVED = 'NO_FILES_RECEIVED',
CANVAS_CONTEXT_IDENTIFIER_NOT_SUPPORTED = 'CANVAS_CONTEXT_IDENTIFIER_NOT_SUPPORTED',
NOT_BE_ABLE_TO_COMPRESS_ENOUGH = 'NOT_BE_ABLE_TO_COMPRESS_ENOUGH'
}
export interface NgxPicaErrorInterface {
err: NgxPicaErrorType;
file?: File;
}
Example
;;