亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

用Vue.js在瀏覽器中實現裁剪圖像功能

2019-11-19 11:19:27
字體:
來源:轉載
供稿:網友

你是否寫了一個需要接受用戶上傳圖片的 Web 應用,后來才意識到用戶總是提供各種形狀和大小的圖像來破壞你的網站主題?在網絡上處理圖像很容易成為一種痛苦 ―― 當然,除非你使用了正確的工具。

在本教程中,我們將探討如何在瀏覽器中使用 JavaScript 庫來操作圖片,為服務器上的存儲做準備,并在 Web 程序中使用。我們將使用 Vue.js 而不是原生 JavaScript來完成此操作。

要了本文想要完成的任務,請查看上面的圖片。左側是原始圖像,右側是新圖像預覽。我們可以移動裁剪框并調整其大小,預覽圖像也會隨之改變。用戶可以根據需要下載預覽圖像。

我們將用名為 Cropper.js 【 https://fengyuanchen.github.io/cropperjs/ 】的庫完成繁重的工作。

使用圖像裁剪依賴項創建一個新的Vue.js項目

第一步是創建一個新項目并安裝必要的依賴項。假設你已安裝并配置了Vue CLI

https://fengyuanchen.github.io/cropperjs/ 】。

在命令行下執行以下命令:

vue create cropper-project

出現提示時,選擇默認選項。這將是一個簡單的項目,所以不必要擔心路由和其它一些東西。

導航到新項目并執行以下操作:

npm install cropperjs --save

上面的命令會將 Cropper.js 安裝到我們的項目中??梢院苋菀椎厥褂肅DN,但因為我們使用的是利用 webpack 的框架,所以 npm 路由最有意義。

雖然安裝了我們的依賴項,但還有一件事需要去做。因為用的是 npm,所以不包含CSS信息 ―― 只包含 JavaScript 信息。我們需要在本地或通過 CDN 包含 CSS信 息。本文使用CDN。

打開項目的 public/index.html 并包含以下 HTML 標記:

<!DOCTYPE html> <html lang="en">   <head>     <meta charset="utf-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <meta name="viewport" content="width=device-width,initial-scale=1.0">     <link rel="icon" href="<%= BASE_URL %>favicon.ico" rel="external nofollow" >     <title>image-cropping</title>     <link rel="stylesheet" >  </head>  <body>    <noscript>      <strong>We're sorry but image-cropping doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>    </noscript>    <div id="app"></div>    <!-- built files will be auto injected -->  </body></html>

請注意,在 <head> 標記中,我們包含了 cropper.min.css 文件。同樣,只要你得到這個文件,如何獲得CSS信息并不重要。如果沒有 CSS 信息,我們的圖像就不會有花哨的裁剪框。

在Vue.js項目中使用JavaScript裁剪圖像

現在項目應該幾乎已配置好并可以在網絡上裁剪圖像。為了保持我們的項目整潔,我們將創建一個新的Vue.js組件來處理我們所有的圖像處理。

在項目中創建 src/components/ImageCropper.vue 文件,并包含以下樣板代碼: 

<template>   <div>     <div class="img-container">       <img ref="image" :src="src" crossorigin>     </div>     <img :src="destination" class="img-preview">   </div> </template><script>  import Cropper from "cropperjs";  export default {    name: "ImageCropper",    data() {      return {        cropper: {},        destination: {},        image: {}      }    },    props: {      src: String    },    mounted() { }  }</script><style scoped>  .img-container {    width: 640px;    height: 480px;    float: left;  }  .img-preview {    width: 200px;    height: 200px;    float: left;    margin-left: 10px;  }</style>

對于這個例子, <style> 標簽的信息并不重要,它只是清理了頁面,并沒有從庫中獲得任何實際效果。

記下 <template> 塊中出現的 src 和 destination 變量。這些變量表示用戶通過 props 對象定義的源圖像,以及已經被操作的目標圖像。我們將能夠通過 ref 變量直接訪問源圖像,這類似于在 DOM 對象上使用 querySelector 。

雖然我們已經為裁剪圖像做好了準備,但實際上并沒有對它們做任何事情。我們將在 mounted 方法中配置 cropping 處理和事件,該方法將在視圖初始化后觸發。

mounted 方法看起來像這樣:

 mounted() {   this.image = this.$refs.image;   this.cropper = new Cropper(this.image, {     zoomable: false,     scalable: false,     aspectRatio: 1,     crop: () => {       const canvas = this.cropper.getCroppedCanvas();       this.destination = canvas.toDataURL("image/png");    }  });}

調用該方法時,我們獲得了對 <template> 塊中的圖像的引用。然后在初始化裁剪工具時使用圖像,同時定義一些配置,這些配置并不是強制性的。

crop 方法是發生奇跡的地方。每當我們處理圖像時,都會調用這個 crop 方法。當執行 crop 方法時,我們應該能夠獲取裁剪、縮放等信息,并從中創建新圖像 ―― 即目標圖像。

這時我們已經創建了組件但尚未使用它。

打開項目的 src/App.vue 文件并包含以下內容:

<template>   <div id="app">     <ImageCropper src="/logo.png" />  </div> </template> <script>   import ImageCropper from "./components/ImageCropper.vue"   export default {    name: "app",    components: {      ImageCropper    }  }</script><style></style>

請注意,我們已經導入了 ImageCropper 組件,并在 <template> 塊中使用它。請記住, src 屬性是 JavaScript 中的 props 之一。在我的示例中,有一個 public/logo.png 文件,你可以根據需要隨意修改它。在真實的場景中,你會使用用戶將要上傳的圖像。

如果你想了解如何上傳文件(如裁剪圖像),可以查看我之前的教程“通過 Vue.js 將文件上傳到遠程Web服務”

https://www.thepolyglotdeveloper.com/2017/12/upload-files-remote-web-service-vuejs-web-application/ 】。

結論

本文講解了如何使用 Vue.js Web 程序中的 Cropper.js 庫來操作圖像。如果你需要接受來自用戶的圖像,并將其用作個人資料或類似內容的一部分,這非常有用,因為你需要將這些圖片調整為一致的大小,這樣你的主題才不會被破壞。

使用圖像裁剪庫與使用原生 JavaScript 的方式沒什么不同,但是有一些事情需要用 Vue.js 與 HTML 組件進行交互。

以上所述是小編給大家介紹的用Vue.js在瀏覽器中裁剪圖像功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人免费网站在线看| 97香蕉超级碰碰久久免费软件| 亚洲国产婷婷香蕉久久久久久| 国产一区红桃视频| 国产综合香蕉五月婷在线| 国产欧美一区二区三区在线| 亚洲奶大毛多的老太婆| 午夜精品福利视频| 成人黄色免费片| 91极品女神在线| 久久综合五月天| 国产精品无av码在线观看| 日韩欧美a级成人黄色| 中文字幕一区电影| 亚洲精品美女在线观看播放| 亚洲国产精品99| 亚洲丝袜av一区| 亚洲欧美日本另类| 国产精品免费一区豆花| 中日韩午夜理伦电影免费| 国模私拍一区二区三区| 国产精品18久久久久久麻辣| 日韩电影免费在线观看| www.久久久久久.com| 精品国产欧美一区二区五十路| 久久国内精品一国内精品| 欧美中文在线字幕| 欧美在线观看一区二区三区| 91热福利电影| 久久久精品国产网站| 亚洲日韩欧美视频一区| 欧美午夜丰满在线18影院| 日韩av在线免播放器| 亚洲午夜av久久乱码| 亚洲毛片在线免费观看| 久久在线免费视频| 亚洲综合精品一区二区| 欧美黄色片免费观看| 51午夜精品视频| 久久97久久97精品免视看| 国产成人精品亚洲精品| 性色av一区二区三区| 欧美专区在线播放| 久久国产精品99国产精| 在线观看精品自拍私拍| 日韩黄色av网站| 欧美老少配视频| 国产日韩专区在线| 色妞久久福利网| 欧美一级黑人aaaaaaa做受| 国产69精品久久久久久| 国产日韩亚洲欧美| 国产欧美在线视频| 中文字幕成人精品久久不卡| 亚洲欧美日本另类| 成人久久18免费网站图片| 国产欧美久久一区二区| 国产精品视频最多的网站| 欧美亚洲国产日韩2020| 国产一区二区在线免费| 中日韩美女免费视频网站在线观看| 日韩有码视频在线| 色综合久久精品亚洲国产| 中文字幕精品一区久久久久| 久久国产色av| 大胆人体色综合| 亚洲性猛交xxxxwww| 国产激情视频一区| 欧美午夜丰满在线18影院| 在线播放日韩av| 国产99久久精品一区二区永久免费| 亚洲欧美另类国产| 日韩精品中文字幕视频在线| 亚洲美女精品久久| 社区色欧美激情 | 欧美精品在线第一页| 久久香蕉精品香蕉| 日韩网站免费观看高清| 成人午夜激情网| 欧美电影免费观看高清完整| 亚洲精品ady| 日韩国产欧美精品在线| 欧美成人四级hd版| 国产日韩精品在线观看| 国产日韩欧美在线看| 日韩av一区二区在线观看| 成人淫片在线看| 一区二区三区视频观看| 在线观看国产精品日韩av| 国产精品久久91| 欧美日韩美女在线观看| xxx一区二区| 久久精品99久久久久久久久| 国产精品一区二区久久| 亚洲精品日韩av| 国产91精品久久久久久| 欧美精品生活片| 视频一区视频二区国产精品| 2019中文字幕全在线观看| 亚洲a在线播放| 97avcom| 中文字幕日韩欧美精品在线观看| 精品亚洲一区二区| 久久亚洲精品毛片| 国产亚洲人成网站在线观看| 欧美激情精品久久久久久变态| 国产精品男人爽免费视频1| 久久久久国色av免费观看性色| 91在线观看欧美日韩| 中文字幕免费精品一区高清| 欧美裸身视频免费观看| 国产一区二区视频在线观看| 欧美精品手机在线| 91性高湖久久久久久久久_久久99| 91老司机在线| 日韩欧美亚洲综合| 日本在线精品视频| 中文字幕av一区| 国外成人在线视频| 97视频在线观看免费高清完整版在线观看| 久久久亚洲精品视频| 在线激情影院一区| 国产91对白在线播放| 亚洲天堂免费观看| 成人h片在线播放免费网站| 日韩经典中文字幕在线观看| 日韩毛片在线看| 亚洲全黄一级网站| 久久伊人91精品综合网站| 亚洲精品国产成人| 成人免费视频xnxx.com| 国产精品视频久久久久| 欧美极品在线视频| 中国日韩欧美久久久久久久久| 国产亚洲人成a一在线v站| 欧美视频中文字幕在线| 国产日韩中文字幕在线| 欧美高清在线视频观看不卡| 国产午夜精品美女视频明星a级| 欧美日韩国产丝袜另类| 欧美最顶级丰满的aⅴ艳星| 性色av香蕉一区二区| 亚洲电影免费观看高清完整版在线观看| 国产精品亚洲精品| 亚洲一区二区中文| 久久久久久成人| 国产精品女人久久久久久| 国产精品一区二区三区久久| 日本韩国欧美精品大片卡二| 亚洲性夜色噜噜噜7777| 精品久久久久久久大神国产| 日本中文字幕成人| 久久伊人精品视频| 在线视频精品一| 亚洲精品97久久| 午夜精品视频网站| 亚洲欧美综合精品久久成人| 久久久女人电视剧免费播放下载| 久久久国产一区二区三区| 亚洲国语精品自产拍在线观看| 国产精品视频99| 国模私拍视频一区| 一区二区三区四区在线观看视频| 日韩欧美在线中文字幕|