GitHub示例源码地址:https://github.com/luoruiemail/ngx-image-cropper
下载下来之后,执行yarn install安装相关node_modules包
然后在目录执行npm start 浏览器中访问http://localhost:4200/ 就可以看到示例效果了 ↓
代码如下↓
将ImageCropperModule添加到模块的导入中,若未安装此包,在Windows PowerShell中执行yarn add ngx-image-cropper 即可
1 import { BrowserModule } from '@angular/platform-browser'; 2 import { NgModule } from '@angular/core'; 3 4 import { AppComponent } from './app.component'; 5 import { ImageCropperjsComponent } from './cropperjs/image-cropperjs/image-cropperjs.component'; 6 import { ImageCropperModule } from 'ngx-image-cropper'; 7 8 @NgModule({ 9 declarations: [ 10 AppComponent, 11 ImageCropperjsComponent 12 ], 13 imports: [ 14 BrowserModule, ImageCropperModule 15 ], 16 providers: [], 17 bootstrap: [AppComponent] 18 }) 19 export class AppModule { }
页面代码↓
1 <div id="container1"> 2 3 <img id="image" style="display: none" src="../../../assets/image/chelun.gif"> 4 <input type="file" (change)="fileChangeEvent($event)" /> 5 6 <image-cropper [imageChangedEvent]="imageChangedEvent" [imageBase64]="base64String" [maintainAspectRatio]="true" [aspectRatio]="1 / 1" [resizeToWidth]="200" resizeToHeight="200" format="png" (imageCropped)="imageCropped($event)" (imageLoaded)="imageLoaded()" 7 (cropperReady)="cropperReady()" (loadImageFailed)="loadImageFailed()"></image-cropper> 8 9 <img [src]="croppedImage" /> 10 11 </div>
1 import { Component, OnInit, AfterViewInit, ViewEncapsulation } from '@angular/core'; 2 // import Cropper from 'cropperjs'; 3 import { ImageCroppedEvent } from 'ngx-image-cropper'; 4 5 @Component({ 6 selector: 'app-image-cropperjs', 7 templateUrl: './image-cropperjs.component.html', 8 //styleUrls: ['./image-cropperjs.component.css'] 9 encapsulation: ViewEncapsulation.None 10 }) 11 export class ImageCropperjsComponent implements AfterViewInit { 12 13 ngAfterViewInit(): void { 14 this.getBase64(`http://${window.location.host}/assets/image/chelun.gif`) 15 } 16 17 getBase64(imgUrl) { 18 const self = this; 19 var xhr = new XMLHttpRequest(); 20 xhr.open("get", imgUrl, true); 21 // 至关重要 22 xhr.responseType = "blob"; 23 xhr.onload = function () { 24 if (this.status == 200) { 25 //得到一个blob对象 26 var blob = this.response; 27 console.log("blob", blob) 28 // 至关重要 29 let oFileReader = new FileReader(); 30 oFileReader.onloadend = function (e) { 31 let base64 = e.target; 32 self.base64String = (<any>base64).result; 33 console.log("方式一》》》》》》》》》", base64) 34 }; 35 oFileReader.readAsDataURL(blob); 36 //====为了在页面显示图片,可以删除==== 37 // var img = document.createElement("img"); 38 // img.onload = function (e) { 39 // window.URL.revokeObjectURL(img.src); // 清除释放 40 // }; 41 // let src = window.URL.createObjectURL(blob); 42 // img.src = src 43 // document.getElementById("container1").appendChild(img); 44 //====为了在页面显示图片,可以删除==== 45 46 } 47 } 48 xhr.send(); 49 } 50 base64String: any; 51 imageChangedEvent: any = ''; 52 croppedImage: any = ''; 53 54 fileChangeEvent(event: any): void { 55 debugger 56 this.imageChangedEvent = event; 57 } 58 imageCropped(event: ImageCroppedEvent) { 59 this.croppedImage = event.base64; 60 } 61 imageLoaded() { 62 // show cropper 63 } 64 cropperReady() { 65 // cropper ready 66 } 67 loadImageFailed() { 68 // show message 69 } 70 cropper: any; 71 constructor() { } 72 73 ngOnInit() { 74 75 } 76 77 getImgUrl($event) { 78 debugger 79 let data = window.URL.createObjectURL($event.path[0].files[0]); 80 this.cropper.replace(data); 81 console.log($event); 82 } 83 rotateRight() { 84 debugger 85 console.log(this.cropper.getData()); 86 this.cropper.rotate(90); 87 } 88 }
示例中 getBase64()方法是加的一个默认图片显示,也可以手动选择文件
通过此示例我们可以做一些图片上传裁剪,修改的操作,保存小图片,非常方便