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 即可

 import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core'; import { AppComponent } from './app.component';
import { ImageCropperjsComponent } from './cropperjs/image-cropperjs/image-cropperjs.component';
import { ImageCropperModule } from 'ngx-image-cropper'; @NgModule({
declarations: [
AppComponent,
ImageCropperjsComponent
],
imports: [
BrowserModule, ImageCropperModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

页面代码↓

 <div id="container1">

     <img id="image" style="display: none" src="../../../assets/image/chelun.gif">
<input type="file" (change)="fileChangeEvent($event)" /> <image-cropper [imageChangedEvent]="imageChangedEvent" [imageBase64]="base64String" [maintainAspectRatio]="true" [aspectRatio]="1 / 1" [resizeToWidth]="" resizeToHeight="" format="png" (imageCropped)="imageCropped($event)" (imageLoaded)="imageLoaded()"
(cropperReady)="cropperReady()" (loadImageFailed)="loadImageFailed()"></image-cropper> <img [src]="croppedImage" /> </div>
 import { Component, OnInit, AfterViewInit, ViewEncapsulation } from '@angular/core';
// import Cropper from 'cropperjs';
import { ImageCroppedEvent } from 'ngx-image-cropper'; @Component({
selector: 'app-image-cropperjs',
templateUrl: './image-cropperjs.component.html',
//styleUrls: ['./image-cropperjs.component.css']
encapsulation: ViewEncapsulation.None
})
export class ImageCropperjsComponent implements AfterViewInit { ngAfterViewInit(): void {
this.getBase64(`http://${window.location.host}/assets/image/chelun.gif`)
} getBase64(imgUrl) {
const self = this;
var xhr = new XMLHttpRequest();
xhr.open("get", imgUrl, true);
// 至关重要
xhr.responseType = "blob";
xhr.onload = function () {
if (this.status == ) {
//得到一个blob对象
var blob = this.response;
console.log("blob", blob)
// 至关重要
let oFileReader = new FileReader();
oFileReader.onloadend = function (e) {
let base64 = e.target;
self.base64String = (<any>base64).result;
console.log("方式一》》》》》》》》》", base64)
};
oFileReader.readAsDataURL(blob);
//====为了在页面显示图片,可以删除====
// var img = document.createElement("img");
// img.onload = function (e) {
// window.URL.revokeObjectURL(img.src); // 清除释放
// };
// let src = window.URL.createObjectURL(blob);
// img.src = src
// document.getElementById("container1").appendChild(img);
//====为了在页面显示图片,可以删除==== }
}
xhr.send();
}
base64String: any;
imageChangedEvent: any = '';
croppedImage: any = ''; fileChangeEvent(event: any): void {
debugger
this.imageChangedEvent = event;
}
imageCropped(event: ImageCroppedEvent) {
this.croppedImage = event.base64;
}
imageLoaded() {
// show cropper
}
cropperReady() {
// cropper ready
}
loadImageFailed() {
// show message
}
cropper: any;
constructor() { } ngOnInit() { } getImgUrl($event) {
debugger
let data = window.URL.createObjectURL($event.path[].files[]);
this.cropper.replace(data);
console.log($event);
}
rotateRight() {
debugger
console.log(this.cropper.getData());
this.cropper.rotate();
}
}

示例中 getBase64()方法是加的一个默认图片显示,也可以手动选择文件

通过此示例我们可以做一些图片上传裁剪,修改的操作,保存小图片,非常方便

最新文章

  1. (转).NET开发人员必备的可视化调试工具(你值的拥有)
  2. linux lsmod命令 及相关信息
  3. IOS第一天多线程-04GCD通信
  4. 【Unity3D技巧】在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 (二) : 引入中间层NotificationCenter
  5. 数32位 unsigned int中1的个数
  6. WP8_读写XML
  7. PHP程序员的40点陋习,我几乎全部中枪
  8. PLSQL插入数据中文乱码的问题
  9. mdf导入sqlServer
  10. Dapper数据库相关操作
  11. Python_重写集合
  12. windows根据端口号杀进程
  13. win10的MySQL客户端连接centos7虚拟机的mysql服务端连接不上解决办法
  14. NetSec2019 20165327 exp1+ 逆向进阶
  15. python基础知识16---函数补充
  16. python 在一个excel存多个sheet
  17. 使用jackson来进行数组格式的json字符串转换成List。
  18. [TFS]TFS2015禁止多人迁出设置
  19. js自定义鼠标右键菜单
  20. java资料——线程(转)

热门文章

  1. Java一道奇特的面试题
  2. Vue 项目中对路由文件进行拆分(解构的方法)
  3. 【转载】全网最!详!细!tarjan算法讲解。
  4. c++继承子类构造函数问题
  5. 泛目录程序(莲花泛目录程序/黑帽SEO/寄生虫/莲花泛目录解析/泛目录软件)
  6. JVM----双亲委派模型
  7. Netfilter 之 iptable_nat
  8. qt QTableView中嵌入复选框CheckBox 的四种方法总结
  9. pytorch-Resnet网络
  10. 实时更新DataGridView 合计值