一:裁剪的思路:
10年積累的網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有廊坊免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。1-1,裁剪區(qū)域:需要進(jìn)行裁剪首先需要形成裁剪區(qū)域,裁剪區(qū)域的大小和我們的鼠標(biāo)移動(dòng)的距離相關(guān)聯(lián),鼠標(biāo)移動(dòng)有多遠(yuǎn),裁剪區(qū)域就有多大。如下圖:
1-2 裁剪區(qū)域的寬和高的計(jì)算:
如上圖,鼠標(biāo)的橫向移動(dòng)距離和縱向移動(dòng)距離就形成了裁剪區(qū)域的寬和高。那么裁剪區(qū)域的寬和高的計(jì)算是:當(dāng)我們點(diǎn)下鼠標(biāo)時(shí),就能夠通過(guò)event事件
對(duì)象獲取鼠標(biāo)點(diǎn)擊位置,e.clientX 和 e.clientY; 當(dāng)鼠標(biāo)進(jìn)行移動(dòng)的時(shí)候,也能通過(guò)event獲取鼠標(biāo)的位置,通過(guò)兩次鼠標(biāo)位置的改變,就能夠獲得
鼠標(biāo)移動(dòng)的距離。即:初始的x軸位置為 initX = e.clientX, initY = e.clientY;
移動(dòng)到某個(gè)點(diǎn)的位置為:endX = e.clientX, endY = e.clientY;
因此裁剪區(qū)域的寬 Tx = endX - initX;
裁剪區(qū)域的高是 Ty = endY - initY;
1-3 陰影區(qū)域的形成
被我們裁剪圖片中除了裁剪區(qū)域以外的部分,都屬于陰影部分。如下圖所示:
那么陰影區(qū)域要如何計(jì)算呢?比如左陰影寬,左陰影寬 = 裁剪區(qū)域的左偏移值 - 圖片本身的左偏移值;那么上陰影高 = 裁剪區(qū)域的上偏移值 - 圖片上偏移值, 如下圖所示:
那么下陰影的高度 = 圖片本身的高度 - 上陰影的高度 - 裁剪區(qū)域的高度;那么右陰影的寬度 = 圖片的寬度 - 左陰影寬 - 裁剪區(qū)域的寬。
1-4 理解裁剪區(qū)域被越界
裁剪圖片過(guò)程中會(huì)出現(xiàn)越界的情況,那么越界又需要分為2種情況, 第一種是:裁剪過(guò)程中的越界,第二種是 移動(dòng)裁剪區(qū)域的越界。
1-4-1 裁剪越界
什么是裁剪時(shí)越界? 就是當(dāng)我們使用鼠標(biāo)拖動(dòng)區(qū)域裁剪超出了圖片的寬度和高度,形成了的越界;如下圖所示:
對(duì)于這種越界需要判斷被裁剪區(qū)域的右側(cè)相對(duì)于瀏覽器左側(cè)的位置,不能超過(guò)圖片右側(cè)的位置相對(duì)于瀏覽器左側(cè)的位置;
且 被裁剪區(qū)域的底部相對(duì)于瀏覽器頂部的位置 不能超過(guò) 圖片的底部相對(duì)于瀏覽器頂部的位置,如下圖所示:
1-4-2 移動(dòng)越界
移動(dòng)越界指已經(jīng)形成了裁剪區(qū)域了,但是我們可以通過(guò)鼠標(biāo)裁剪區(qū)域時(shí)產(chǎn)生了越界。其實(shí)判斷原理和裁剪越界的原理一樣的。
2. 圖片如何進(jìn)行壓縮?
當(dāng)圖片的寬度大于容器的寬度,就需要進(jìn)行壓縮;因此 var scale = 容器的寬度 / 圖片的寬度;
如果圖片的高度 * 縮放比例 > 容器的高度,那么縮放比例 scale = 容器的高度 / 圖片的高度;否則的話,不進(jìn)行壓縮。
2-1:對(duì)于壓縮后 translate3d中的X軸和Y軸移動(dòng)位置計(jì)算方式:
x = 容器的寬度 / 壓縮比
y = 容器的高度 / 壓縮比
即:transform: translate3d(x, y, z) -> translate3d(容器的寬度 / 壓縮比 + 'px', 容器的高度 / 壓縮比 + 'px', 0)
因此頁(yè)面布局變成如下:
<!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元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
本文題目:Vue-cropper圖片裁剪的基本原理及思路講解-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://www.rwnh.cn/article6/dgsjig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站收錄、Google、全網(wǎng)營(yíng)銷推廣、自適應(yīng)網(wǎng)站、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容