一:裁剪的思路:

1-1,裁剪區(qū)域:需要進行裁剪首先需要形成裁剪區(qū)域,裁剪區(qū)域的大小和我們的鼠標(biāo)移動的距離相關(guān)聯(lián),鼠標(biāo)移動有多遠,裁剪區(qū)域就有多大。如下圖:

1-2 裁剪區(qū)域的寬和高的計算:
如上圖,鼠標(biāo)的橫向移動距離和縱向移動距離就形成了裁剪區(qū)域的寬和高。那么裁剪區(qū)域的寬和高的計算是:當(dāng)我們點下鼠標(biāo)時,就能夠通過event事件
對象獲取鼠標(biāo)點擊位置,e.clientX 和 e.clientY; 當(dāng)鼠標(biāo)進行移動的時候,也能通過event獲取鼠標(biāo)的位置,通過兩次鼠標(biāo)位置的改變,就能夠獲得
鼠標(biāo)移動的距離。即:初始的x軸位置為 initX = e.clientX, initY = e.clientY;
移動到某個點的位置為:endX = e.clientX, endY = e.clientY;
因此裁剪區(qū)域的寬 Tx = endX - initX;
裁剪區(qū)域的高是 Ty = endY - initY;
1-3 陰影區(qū)域的形成
被我們裁剪圖片中除了裁剪區(qū)域以外的部分,都屬于陰影部分。如下圖所示:

那么陰影區(qū)域要如何計算呢?比如左陰影寬,左陰影寬 = 裁剪區(qū)域的左偏移值 - 圖片本身的左偏移值;那么上陰影高 = 裁剪區(qū)域的上偏移值 - 圖片上偏移值, 如下圖所示:

那么下陰影的高度 = 圖片本身的高度 - 上陰影的高度 - 裁剪區(qū)域的高度;那么右陰影的寬度 = 圖片的寬度 - 左陰影寬 - 裁剪區(qū)域的寬。
1-4 理解裁剪區(qū)域被越界
裁剪圖片過程中會出現(xiàn)越界的情況,那么越界又需要分為2種情況, 第一種是:裁剪過程中的越界,第二種是 移動裁剪區(qū)域的越界。
1-4-1 裁剪越界
什么是裁剪時越界? 就是當(dāng)我們使用鼠標(biāo)拖動區(qū)域裁剪超出了圖片的寬度和高度,形成了的越界;如下圖所示:

對于這種越界需要判斷被裁剪區(qū)域的右側(cè)相對于瀏覽器左側(cè)的位置,不能超過圖片右側(cè)的位置相對于瀏覽器左側(cè)的位置;
且 被裁剪區(qū)域的底部相對于瀏覽器頂部的位置 不能超過 圖片的底部相對于瀏覽器頂部的位置,如下圖所示:

1-4-2 移動越界
移動越界指已經(jīng)形成了裁剪區(qū)域了,但是我們可以通過鼠標(biāo)裁剪區(qū)域時產(chǎn)生了越界。其實判斷原理和裁剪越界的原理一樣的。
2. 圖片如何進行壓縮?
當(dāng)圖片的寬度大于容器的寬度,就需要進行壓縮;因此 var scale = 容器的寬度 / 圖片的寬度;
如果圖片的高度 * 縮放比例 > 容器的高度,那么縮放比例 scale = 容器的高度 / 圖片的高度;否則的話,不進行壓縮。
2-1:對于壓縮后 translate3d中的X軸和Y軸移動位置計算方式:
x = 容器的寬度 / 壓縮比
y = 容器的高度 / 壓縮比
即:transform: translate3d(x, y, z) -> translate3d(容器的寬度 / 壓縮比 + 'px', 容器的高度 / 壓縮比 + 'px', 0)
因此頁面布局變成如下:
<!DOCTYPE html> <html> <head> <title>圖片裁剪</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0"> <link rel="stylesheet" type="text/css" href="./index.css"> </head> <body> <div id="app" > <div class="vue-cropper"> <div class="cropper-box"> <div class="cropper-box-canvas" > <img src="https://images2018.cnblogs.com/blog/561794/201804/561794-20180416230443389-1451524334.jp" /> </div> </div> <div class="cropper-drag-box cropper-crop"></div> </div> </div> </body> </html>
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文題目:Vue-cropper圖片裁剪的基本原理及思路講解-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://www.yijiale78.com/article6/dgsjig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站收錄、Google、全網(wǎng)營銷推廣、自適應(yīng)網(wǎng)站、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)