這篇文章主要介紹js+html5 canvas實(shí)現(xiàn)ps鋼筆摳圖的示例,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)建站是專業(yè)的石樓網(wǎng)站建設(shè)公司,石樓接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行石樓網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
html5 canvas+js實(shí)現(xiàn)ps鋼筆摳圖
1. 項(xiàng)目要求需要用js實(shí)現(xiàn)photoshop中鋼筆摳圖功能,就用了近三四天的時(shí)間去解決它,最終還是基本上把他實(shí)現(xiàn)了。
做的過程中走了不少彎路,最終一同事找到了canvans以比較核心的屬性globalCompositeOperation = "destination-out",
屬性可以實(shí)現(xiàn)通過由多個(gè)點(diǎn)構(gòu)成的閉合區(qū)間設(shè)置成透明色穿透畫布背景色或是背景圖片,這樣省了許多事。
2.實(shí)現(xiàn)效果:
鼠標(biāo)點(diǎn)完之后會(huì)將所有的點(diǎn)連成閉合區(qū)間,并可自由拖拉任一點(diǎn),當(dāng)形成閉合區(qū)間后,可在任意兩點(diǎn)之間添加新點(diǎn)進(jìn)行拖拉。
3.實(shí)現(xiàn)思路:
設(shè)置兩層div,底層設(shè)置圖片,頂層設(shè)置canvas畫布(如果將圖片渲染到畫布上,摳圖時(shí)會(huì)閃爍,所以至于底層),在畫布上監(jiān)視
鼠標(biāo)事件反復(fù)渲染點(diǎn)及之間連線,形成閉合區(qū)間后將整體畫布渲染小塊背景圖片,并將閉合區(qū)間渲染透明色。并把點(diǎn)的相對(duì)畫布
坐標(biāo)記錄或更新到數(shù)組中去。截完圖后,將點(diǎn)的坐標(biāo)集合傳回后臺(tái),由后臺(tái)代碼實(shí)現(xiàn)根據(jù)坐標(biāo)點(diǎn)及圖片寬度高度實(shí)現(xiàn)截圖,并設(shè)
至背景色為透明色(canvas也可以實(shí)現(xiàn)截圖,但需要處理像素點(diǎn)實(shí)現(xiàn)背景透明,暫時(shí)還沒實(shí)現(xiàn),計(jì)劃用C#后臺(tái)代碼實(shí)現(xiàn))。
4.js(寫的不規(guī)范比較亂,大家就當(dāng)參考吧)
以上是“js+html5 canvas實(shí)現(xiàn)ps鋼筆摳圖的示例”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!