本篇文章給大家分享的是有關(guān)Angular中怎么利用 ng-img-max 調(diào)整瀏覽器中的圖片,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括沙洋網(wǎng)站建設(shè)、沙洋網(wǎng)站制作、沙洋網(wǎng)頁制作以及沙洋網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,沙洋網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到沙洋省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
安裝
首先,使用npm 或 Yarn安裝模塊:
$ npm install ng2-img-max blueimp-canvas-to-blob --save # or Yarn : $ yarn add ng2-img-max blueimp-canvas-to-blob
blueimp-canvas-to-blob是一個(gè)polyfill,以便canvas.toBlob()
可以在Safari和舊版本的Internet Explorer等瀏覽器上使用。
將polyfill腳本包含在項(xiàng)目中。 如果您使用Angular CLI,您可以將腳本添加到.angular-cli.json文件中:
//: .angular-cli.json ... "scripts": [ "../node_modules/blueimp-canvas-to-blob/js/canvas-to-blob.min.js" ], //...
將腳本添加到Angular CLI配置后,您將需要重新啟動(dòng)本地服務(wù)。
現(xiàn)在我們將模塊導(dǎo)入應(yīng)用模塊或功能模塊:
//: app.module.ts //... import { Ng2ImgMaxModule } from 'ng2-img-max'; @NgModule({ declarations: [ AppComponent ], imports: [ //... ng2ImgMaxModule ], providers: [], bootstrap: [ AppComponent ] }) export class AppModule {}
最后,ng2-img-max服務(wù)可以導(dǎo)入并注入到這樣的組件中:
import { Component } from '@angular/core'; import { Ng2ImgMaxService } from 'ng2-img-max'; @Component({ ... }) export class AppComponent { constructor(private ng2ImgMax: Ng2ImgMaxService ) {} }
使用
我們添加一個(gè)File文件輸入框到組件的模板中,像這樣:
在組件類中添加方法onImageChange, 它將會(huì)限制圖片的寬高為:400px,300px:
updateImage: Blob; constructor(private ng2ImgMax: Ng2ImgMaxService) {} onImageChange(event){ let image = event.target.files[0]; this.ng2ImgMax.resizeImage(image,400,300).subscribe(result=> { this.uploadImage = result; }, error=> { console.log('error:',error); }) }
如果您有多個(gè)圖像需要一次性調(diào)整大小,請(qǐng)改用resize方法,并將圖片文件數(shù)組作為第一個(gè)參數(shù)傳入。
結(jié)果是Blob類型,但是如果需要,可以使用File構(gòu)造函數(shù)將其轉(zhuǎn)換為正確的文件:
//: app.component.ts uploadedImage: File; constructor(private ng2ImgMax: Ng2ImgMaxService) {} onImageChange(event){ let image = event.target.files[0]; this.ng2ImgMax.resizeImage(image,400,300).subscribe(result=> { this.uploadedImage = new File([result],result.name); }, error=> { console.log('error',error); }) }
您現(xiàn)在可以將文件上傳到您的后端。 不要忘記在后端做好驗(yàn)證,因?yàn)檫@里的內(nèi)容會(huì)阻止一些用戶將超大或非圖像文件直接上傳到后端。
只限制寬度或高度
假設(shè)您只想將高度限制為300px,并相應(yīng)調(diào)整寬度,以保持寬高比相同。 只要設(shè)置任何一閥值到10000:
//... onImageChange(event) { let image = event.target.files[0]; this.ng2ImgMax.resizeImage(image,10000,300).subscribe(result=> { this.uploadedImage = new File([result],result.name); }, error=> { console.log('error:',error); }); }
壓縮代替Resizing
您還可以使用compress或compressImage方法執(zhí)行有損壓縮,而不是調(diào)整圖像大小。 只需傳遞最大值(兆字節(jié))。 你顯然想要運(yùn)行一些測(cè)試,看看你想要走多遠(yuǎn)的幾個(gè)小時(shí),同時(shí)保持圖像看起來很好。
在以下示例中,我們將生成的圖像限制為大約75Kb:
onImageChange(event) { let image = event.target.files[0]; this.ng2ImgMax.compressImage(image, 0.075).subscribe( result => { this.uploadedImage = new File([result], result.name); this.getImagePreview(this.uploadedImage); }, error => { console.log('? Oh no!', error); } ); }
圖片預(yù)覽
您可能想要預(yù)覽要上傳到用戶的圖像。 您可以使用FileReader對(duì)象執(zhí)行此操作。 您還需要使用Angular的DomSanitizer來使其信任使用FileReader對(duì)象創(chuàng)建的base64編碼數(shù)據(jù)URI:
現(xiàn)在,我們的組件內(nèi)容是這樣的。組件中有趣的新方法是getImagePreview:
//: app.component.ts import { Component } from '@angular/core'; import { Ng2ImgMaxService } from 'ng2-img-max'; import { DomSanitizer } from '@angular/platform-browser'; @Component({ ... }) export class AppComponent { uploadedImage: File; imagePreview: string; constructor( private ng2ImgMax: Ng2ImgMaxService, public sanitizer: DomSanitizer ) {} onImageChange(event) { let image = event.target.files[0]; this.ng2ImgMax.resizeImage(image, 10000, 375).subscribe( result => { this.uploadedImage = new File([result], result.name); this.getImagePreview(this.uploadedImage); }, error => { console.log('? Oh no!', error); } ); } getImagePreview(file: File) { const reader: FileReader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => { this.imagePreview = reader.result; }; } }
在我們的模板中,我們可以使用sanitizer來顯示如圖像:
//: app.component.html
以上就是Angular中怎么利用 ng-img-max 調(diào)整瀏覽器中的圖片,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。