整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          如何在fabric.js中使用蒙版合成圖片

          ?現(xiàn)在借助于Html5中Canvas可以實(shí)現(xiàn)在線對圖片進(jìn)行一些較復(fù)雜的編輯操作,如圖片合成、裁剪、旋轉(zhuǎn)、縮放、調(diào)整亮度、添加濾鏡等等。但由于canvas原生api使用起來比較繁瑣,特別是利用canvas對圖片一些復(fù)雜的操作,如利用蒙版實(shí)現(xiàn)手機(jī)殼和圖案在線合成并可調(diào)整圖案大小及位置時,使用原生api的工作量非常大,且隨著需求的調(diào)整、細(xì)化,代碼會變得復(fù)雜且臃腫,難以維護(hù),最終變成shit mountain堆在那里。

          ??當(dāng)需要實(shí)現(xiàn)此類復(fù)雜的功能時,這就不得不借助于現(xiàn)成的canvas庫了,比如fabric.js。fabric.js是一個功能強(qiáng)大且易用的Html5 Canvas js類庫。使用fabric.js,我們可以輕松實(shí)現(xiàn)對圖片進(jìn)行在線合成、裁剪等復(fù)雜操作。

          ??本篇文章將介紹如何使用fabric.js實(shí)現(xiàn)帶蒙版圖片合成及調(diào)整、導(dǎo)出等。

          1. 安裝并在js中引入fabric
          //模塊項(xiàng)目
          npm install fabric --save
          import { fabric } from "fabric"
          //非模塊化項(xiàng)目
          <script src="fabric.js"></script>
          
          1. 在html中新建一個canvas標(biāo)簽
          <canvas id="c" ></canvas>
          
          1. 初始化canvas
          let id = 'c';
          let canvas = new fabric.Canvas(id, {
              backgroundColor: '#fff',//背景色,默認(rèn)透明背景
              width: 800,//canvas畫布寬度
              height: 800//畫布高度
          })
          
          1. 添加背景圖片
          fabric.Image.fromURL(圖片的URL, (img) => {
              img.scaleToHeight(800);//圖片縮放到畫布高度
              canvas.add(img);
              canvas.sendToBack(img);//放在最底層
              //也可以直接使用canvas.setBackgroundImage方法直接設(shè)置背景圖片
          }, {
              //也可以在回調(diào)里使用.set方法設(shè)置各個屬性值
              crossOrigin: "anonymous",//跨域時需要加上
              selectable: false,
              left: 800 / 2, //顯示在畫布中間
              top: 800 / 2,
              originX: 'center',//橫坐標(biāo)原點(diǎn)位置
              originY: 'center',//縱坐標(biāo)原點(diǎn)位置
          });
          

          注意: 要需要在回調(diào)函數(shù)里按實(shí)際寬或高度設(shè)置圖片寬度或高度顯示比例,img.scaleToHeight(800)


          1. 加載蒙版及圖案
          //先加載蒙版
          fabric.Image.fromURL(蒙版url, (mask) => {
              mask.scaleToHeight(800);
              //加載圖案
              fabric.Image.fromURL(圖案url, (img) => {
                  img.scaleToHeight(800);
                  canvas.add(img);
              }, {
                  crossOrigin: "anonymous",
                  left: 400,
                  top: 400,
                  originX: 'center',
                  originY: 'center',
                  selectable: false,
                  borderColor: "#0091FF", //選中時邊框顏色
                  borderScaleFactor: 2, //邊框比例因子
                  cornerSize: 8,//邊框控制角大小
                  padding: 0,
                  cornerColor: "#0091FF",
                  clipPath: mask,//指定蒙版圖片
              });
          }, {
              crossOrigin: "anonymous",
              absolutePositioned: true,//根據(jù)實(shí)際設(shè)置,為true時固定顯示,不隨圖案移動而移動
              left: 400,//指定蒙版顯示大小
              top: 400,
              originX: 'center',
              originY: 'center',
          });
          

          1. 啟用編輯
            設(shè)置圖案圖片的selectable屬性為true,并設(shè)置圖片對象為活動狀態(tài)
          img.set("selectable", true);
          canvas.setActiveObject(img);
          canvas.requestRenderAll();
          

          1. 保存編輯后的圖案
            保存可以直接導(dǎo)出為圖片,也可以導(dǎo)出為json
          //導(dǎo)出為json
          let json = canvas.toJSON();
          //將json保存到后臺服務(wù)器,可以根據(jù)json對圖片再次編輯,json中包含了調(diào)整后圖片的高度、寬度、角度等信息
          
          //導(dǎo)出為base64圖片
          let imgBase64 = canvas.toDataURL({
              format:'png',
              multiplier: 2,//根據(jù)實(shí)際需要設(shè)置導(dǎo)出圖片與當(dāng)前canvas的比例,比例越大,導(dǎo)出圖片的分辨率越高
          });
          
          1. 對編輯過的圖案再次編輯
            初始化canvas后,通過loadFromJSON加載圖片,這樣加載出來的圖片是我們上次編輯后的圖片,可以對其繼續(xù)調(diào)整。
          canvas.loadFromJSON(json, canvas.renderAll.bind(canvas));
          

          問題
          ??盡管fabric.js功能已經(jīng)很強(qiáng)大,api也比較完善,結(jié)合官網(wǎng)文檔可以快速實(shí)現(xiàn)我們的需求,但有一些細(xì)節(jié)問題需要我們?nèi)ゲ瓤印⑷タ偨Y(jié),比如:

          1. 加載json后圖片位置大小等與上次我們編輯完保存的有些許差異,這是因?yàn)閷?dǎo)出的json中的left、top、angle、scaleX、scaleY等只保留到小數(shù)點(diǎn)后兩位,這樣當(dāng)我們的圖片分辨率比較高時,差距尤其明顯,解決此問題只需導(dǎo)出時指定我們需要保留的屬性即可
          let json = canvas.toJSON(['crossOrigin', 'selectable','angle', 'left', 'right', 'scaleX', 'scaleY']);
          
          1. 加載蒙版時別忘了指定蒙版圖片屬性的absolutePositioned為true(根據(jù)實(shí)際需要設(shè)置)
          2. 在vue等框架中通過條件渲染或列表渲染時需對canvas擇機(jī)初始化,否則會找不到canvas元素導(dǎo)致初始化失敗

          大家分享最新版本的亮度蒙版插件TKActions V7 for Mac,適用于多個版本的Photoshop,TKActions v7漢化版中包含RapidMask、Combo、Cx和Batch四個插件,功能各異,tkactions v7插件可以根據(jù)圖片亮度的不同,對不同的區(qū)域進(jìn)行單獨(dú)的調(diào)節(jié),有助于用戶進(jìn)行后期優(yōu)化,還在找TK亮度蒙版插件的朋友可以試試哦!

          TKActions V7 for Mac官方介紹

          TKActions V7是用于制作光度掩模和運(yùn)行Photoshop的綜合面板的最新版本。它包括以前V6面板的所有功能以及許多新功能。與其前身一樣,TK7面板是模塊化的,因此用戶可以在工作空間中以最佳方式配置它。Combo模塊甚至有兩種不同的安排,如果需要,可以采用新的緊湊布局。TK面板在全球范圍內(nèi)使用,并預(yù)先編程了六種常用語言:英語,西班牙語,德語,法語,意大利語和中文。用戶可以選擇他們喜歡的語言。

          RapidMask模塊使用獨(dú)特的快速蒙版引擎,以接近實(shí)時的速度快速生成光度掩模和其他基于像素的掩模的整個光譜。基于掩碼的界面計算16位掩碼,用戶可以預(yù)先看到這些掩碼,以便明智地選擇使用哪一個。界面采用自上而下的工作流程,可以快速輕松地創(chuàng)建蒙版。編號部分指導(dǎo)用戶完成整個過程。有幾種修改選項(xiàng),包括掩模計算器,允許所有掩模,甚至修改的掩模,以獨(dú)特的方式組合。

          https://mac.orsoon.com/Mac/171139.html

          TKActions V7簡化而高效。大多數(shù)用戶只需要兩個V6模塊(RapidMask加上Combo或Cx)來完成所有工作。除了主界面之外,還有一些邏輯子菜單可以輕松訪問,并且在不再需要時會自動關(guān)閉。將鼠標(biāo)滾動到下面的圖像上會顯示這些模塊中可用的更多基礎(chǔ)菜單。

          TKActions亮度蒙版插件功能特色

          TKActions V7面板專為Photoshop CC設(shè)計,可充分利用Photoshop CC可容納的HTML5架構(gòu)。以下是每個模塊的一些功能。

          RapidMask

          多個面罩/多個來源 - TK7面板不僅僅是一個發(fā)光面罩。創(chuàng)建通道,顏色,飽和度和振動掩模與光度掩模一樣容易,并且可以生成這些基于像素的自羽化掩模的整個光譜。SOURCE菜單可以輕松選擇不同的像素數(shù)據(jù)作為制作蒙版的起點(diǎn)

          有組織的工作流程 - 四個不同的部分 - SOURCE,MASK,MODIFY和OUTPUT--引導(dǎo)用戶完成蒙版制作過程。

          新面具 -TK7現(xiàn)在具有Color Zone蒙版和CMYK蒙版。

          輕松添加和減去蒙版 - 蒙版計算器提供了一種簡單的方法來添加,減去或交叉面板創(chuàng)建的任何蒙版。

          更多MODIFY選項(xiàng) - 新的修改功能允許通過繪畫,刻錄,閃避甚至Photoshop的Camera Raw濾鏡實(shí)現(xiàn)精確蒙版。

          多種輸出選項(xiàng) -使用當(dāng)前的快速蒙版作為圖層蒙版,輕松創(chuàng)建調(diào)整圖層和像素圖層。

          圖層蒙版模式 - 提供基于圖像的方法,通過將蒙版直接應(yīng)用為活動圖層上的圖層蒙版,快速選擇或創(chuàng)建最佳蒙版。

          強(qiáng)調(diào)色界面 - 整個模塊只有一種強(qiáng)調(diào)色,用戶可以根據(jù)自己的喜好進(jìn)行更改。

          點(diǎn)擊跟蹤 -按鈕在點(diǎn)擊后保留一個強(qiáng)調(diào)色的陰影,這樣用戶就可以跟蹤他們上次選擇的面具。

          Combo/Cx

          緊湊的設(shè)計 - 將Photoshop控件,網(wǎng)頁銳化和創(chuàng)意操作集成到一個模塊中。

          從模塊運(yùn)行Photoshop -可以通過單擊模塊單擊按鈕運(yùn)行許多常用的Photoshop功能,鍵盤快捷鍵和菜單項(xiàng)。

          靜音顏色界面 -將按鈕分隔為邏輯組,以便快速找到正確的Photoshop功能。

          多功能按鈕 - 幾個按鈕具有雙重功能,可以通過按鈕本身以圖形方式顯示,也可以使用CTRL /命令鍵激活。

          使用“TK?”按鈕訪問創(chuàng)意Photoshop操作菜單 - 包括新操作手繪暈影,聚光燈,Dehaze和添加顏色。

          曝光混合操作 -Stack,Align和Focus Blend是“TK?”按鈕的一部分。

          集成的網(wǎng)絡(luò)銳化 -TK7現(xiàn)在提供多維支持。將Web圖像銳化為任何維度,轉(zhuǎn)換為sRGB,并運(yùn)行銳化后操作。

          擴(kuò)展用戶操作 -通過“用戶?”按鈕訪問的可編程操作允許用戶直接從面板運(yùn)行自己的操作。

          Batch

          多圖像銳化 -只需單擊一下按鈕,即可為網(wǎng)絡(luò)調(diào)整和銳化圖像的整個文件夾。

          多維銳化 -TK7現(xiàn)在允許不同的垂直和水平尺寸,可以組合包含需要以不同方式調(diào)整大小的垂直和水平圖像的文件夾。

          所有模塊

          活動選擇指示器 - 即使沒有可見的行進(jìn)螞蟻,也會顯示活動選擇。

          滾動幫助 - 按住ALT /選項(xiàng)鍵并滾動按鈕會在模塊的頂部或底部顯示幫助消息。

          TML5技術(shù)已經(jīng)越來越被我們所接受,特別是一些3D的動畫特效。本文介紹的8個HTML5 3D動畫并沒有特別華麗的界面,但是比較實(shí)用,涉及到3D圖片、3D圖表、3D按鈕等方面,一起來看看。

          1、HTML5 3D動畫柱形圖表

          這次我們要來分享一款效果非常酷的HTML5 3D柱形圖表,這款HTML5圖表和之前分享的都不一樣,主要是外觀上比較吸引人,首先圖表是3D立體的,有一種非常棒的視覺效果;其次,當(dāng)鼠標(biāo)劃過柱形圖表時,會有很不錯的HTML5動畫效果。




          2、HTML5 3D 粒子波浪動畫特效

          今天我們分享一款升級版HTML5 3D粒子波浪動畫特效,我們可以旋轉(zhuǎn)不同的視角來欣賞粒子波浪的滾動特效。HTML5在動畫制作方面的確讓人眼前一亮。




          3、HTML5自定義文字背景生成QQ簽名檔

          這是一款利用HTML5實(shí)現(xiàn)的自定義文字背景應(yīng)用,首先我們可以輸入需要顯示的文字,并且為該文字選擇一張背景圖片,背景圖片就像蒙版一樣覆蓋在文字上。點(diǎn)擊生成QQ簽名檔即可將文字背景融為一體生成另外一張圖片,你也可以下載這張擁有你QQ簽名檔的圖片。




          4、HTML5坦克大戰(zhàn)游戲簡化版

          今天分享的是一款簡化版的HTML5坦克大戰(zhàn)游戲,方向鍵控制坦克的行進(jìn)方向,空格鍵發(fā)射子彈,命中敵方坦克后也會發(fā)出聲音,效果還算可以。




          5、HTML5 3D陰影文字特效

          今天我們要來分享一款非常簡單大氣的HTML5 3D文字特效,這個3D文字特效是通過文字加粗以及文字陰影來實(shí)現(xiàn)的,效果非常不錯。同時我們在html5tricks網(wǎng)站上也分享過很多炫酷的文字特效,比如CSS3文字陰影效果 陰影角度可隨鼠標(biāo)變化、動感的CSS3 Loading文字特效。




          6、HTML5 3D衣服擺動特效 超酷HTML5 3D動畫

          今天向大家分享一款HTML5 3D衣服擺動動畫特效,動畫也是在HTML5 Canvas上完成,它模擬衣服晾在繩子上,點(diǎn)擊鼠標(biāo)可以讓衣服擺動起來,就行風(fēng)吹動它一樣,非常逼真炫酷。




          7、HTML5/CSS3一組可愛的3D按鈕

          這是一款利用HTML5和CSS3制作而成的按鈕組合,這款CSS按鈕非常具有個性化。該CSS3按鈕不僅具有3D的外觀,點(diǎn)擊按鈕也具有非常立體的效果,更具有特點(diǎn)的是這款CSS3按鈕的形狀是不規(guī)則的,而且按鈕中都有一個可愛的小圖標(biāo)。




          8、HTML5 Canvas 3D折線圖表應(yīng)用

          今天我們再來討論一下關(guān)于HTML5圖表應(yīng)用的問題,這款HTML5圖表是基于canvas的3D折線圖表,圖表在初始化的時候會根據(jù)數(shù)據(jù)點(diǎn)把折線分割成多條線段,然后線段將逐漸懸浮到數(shù)據(jù)點(diǎn)對應(yīng)數(shù)值的位置。由于是3D的效果,所以圖表的折線也和其他折線圖表的不同。




          以上就是8個經(jīng)典的HTML5 3D動畫賞析,希望大家喜歡。


          主站蜘蛛池模板: 少妇无码一区二区二三区| 久久91精品国产一区二区| 中文字幕一区二区三区在线不卡 | 亚洲国产精品一区二区久久| 精品无码一区二区三区在线 | 亚洲综合激情五月色一区| 久久久久人妻精品一区三寸| 亚洲片一区二区三区| 日日摸夜夜添一区| 免费一区二区三区四区五区| 久久一区二区精品| 精品乱子伦一区二区三区| V一区无码内射国产| 一区二区三区日本视频| 无码人妻精品一区二区三区夜夜嗨 | 日本一区二区三区爆乳| 亚洲欧洲无码一区二区三区| 久久se精品动漫一区二区三区| 五十路熟女人妻一区二区| 人妻久久久一区二区三区 | 亚洲视频免费一区| 精品人妻一区二区三区四区| 国精产品一区一区三区有限在线| 久久综合亚洲色一区二区三区| 国产成人久久精品麻豆一区| 国产精品va一区二区三区| 国产美女在线一区二区三区| 国产无套精品一区二区| 麻豆AV一区二区三区| 亚洲爆乳无码一区二区三区| 91视频国产一区| 秋霞无码一区二区| 国产成人av一区二区三区不卡| 亚洲国产精品一区二区三区在线观看| 亚洲视频在线一区二区| 一区二区视频免费观看| 日本一区免费电影| 麻豆视传媒一区二区三区| 国产免费一区二区三区免费视频| 中文字幕一区精品| 性色AV一区二区三区天美传媒|