真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaScript實(shí)現(xiàn)圖片處理與合成的方法-創(chuàng)新互聯(lián)

這篇文章主要講解了JavaScript實(shí)現(xiàn)圖片處理與合成的方法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

目前創(chuàng)新互聯(lián)公司已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、亳州網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

引言:

圖片處理現(xiàn)在已經(jīng)成為了我們生活中的剛需,想必大家也經(jīng)常有這方面的需求。實(shí)際前端業(yè)務(wù)中,也經(jīng)常會(huì)有很多的項(xiàng)目需要用到

圖片加工和處理。

首先,我這里將前端圖片處理暫且分成兩種類型:基礎(chǔ)類型 與 算法類型;

  • 基礎(chǔ)類型的圖片處理技術(shù): 圖片縮放,旋轉(zhuǎn),添加邊框,圖片合成,拼圖等業(yè)務(wù)都屬于基礎(chǔ)類型的圖片處理,其區(qū)分點(diǎn)在于無需使用像素級(jí)別的算法,而是通過計(jì)算改變圖片的尺寸及位置等來改造圖片。例如常用的貼紙功能:
     
  • 算法類型的圖片處理: 這類型的圖片處理復(fù)雜度較高,特點(diǎn)是通過像素級(jí)別算法對(duì)圖片的像素點(diǎn)進(jìn)行RGBA通道值等進(jìn)行改造,例如我們使用photshop或者美圖秀秀等工具對(duì)圖片進(jìn)行的 美顏 / 濾鏡 / 黑白 / 摳圖 / 模糊等操作,這類型的重點(diǎn)主要在于算法和性能層面。例如常用的妝容功能:
     

通過這些積累,我封裝了幾個(gè)項(xiàng)目中常用的功能:

  • 圖片合成: Example Git
  • 圖片裁剪: Example Git
  • 人像摳除: Example Git

本系列首先從基礎(chǔ)類型處理開啟我們的旅程。基礎(chǔ)類型的圖片處理在實(shí)際項(xiàng)目中有著大量的使用場(chǎng)景,主要是運(yùn)用canvas的能力來完成,不存在性能和兼容性問題,能夠達(dá)到線上運(yùn)行標(biāo)準(zhǔn)。我這里將基礎(chǔ)類型的圖片處理大致的分成以下幾種類型,這些類型基本能覆蓋日常所有業(yè)務(wù)場(chǎng)景:

  • 圖片的縮放;
  • 圖片的裁剪;
  • 圖片的合成;
    • 圖片與圖片的合成,例如貼紙,邊框,水印等;
    • 為圖片添加文字;
    • 為圖片添加基礎(chǔ)幾何圖形;
         

Tips: 我已將該類型的圖片處理場(chǎng)景封裝成了一個(gè)插件,基本上能應(yīng)付所有這類型圖片處理的需求,GIT地址 (歡迎探討);
在介紹具體的功能前,由于圖片的繪制完全的依賴于圖片的加載,因此先來了解一些前置知識(shí)。

1、圖片的跨域

首先,圖片加載并繪制涉及了圖片的跨域問題,因此如果是一張?jiān)诰€的圖片,需要在圖片服務(wù)器上設(shè)置跨域頭,并且在前端加載圖片之前將標(biāo)簽的crossOrigin設(shè)置為*,否則繪制到畫布的時(shí)候會(huì)報(bào)跨域的錯(cuò)誤。

Tips: 這里積累了一些小坑,可以跟大家分享下:

1、crossOrigin需要嚴(yán)格設(shè)置,既只有是線上圖片時(shí),才設(shè)置,而本地路徑或者base64時(shí),則一定不能設(shè)置,否則在某些系統(tǒng)下會(huì)報(bào)錯(cuò),導(dǎo)致圖片加載失??;

2、當(dāng)項(xiàng)目為本地包環(huán)境時(shí),例如內(nèi)置于 App中時(shí),crossOrigin值無效,webview的安全機(jī)制會(huì)導(dǎo)致無論該值設(shè)置與否,都會(huì)報(bào)跨域的錯(cuò)誤。解決辦法是:需要將所有圖片轉(zhuǎn)換成base64才能正確繪制;

3、crossOrigin值一定要在圖片加載之前設(shè)置,即為賦值src之前進(jìn)行設(shè)置,否則無效;

2、圖片的加載

由于canvas的繪制需要的是已經(jīng)加載完成的圖片,我們需要確保繪制的素材圖片是已經(jīng)加載完成的,因此我們需要使用的onload事件,可以使用html中已存在的圖片,或者用js創(chuàng)建一個(gè)圖片對(duì)象:

function loadImage(image, loader, error){
  // 創(chuàng)建 image 對(duì)象加載圖片;
  let img = new Image();
  
  // 當(dāng)為線上圖片時(shí),需要設(shè)置 crossOrigin 屬性;
  if(image.indexOf('http') == 0)img.crossOrigin = '*';
  img.onload = () => {
    loaded(img);
    
    // 使用完后清空該對(duì)象,釋放內(nèi)存;
    setTimeout(()=>{
      img = null;
    },1000);
  };
  img.onerror = () => {
    error('img load error');
  };
  img.src = image;
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


標(biāo)題名稱:JavaScript實(shí)現(xiàn)圖片處理與合成的方法-創(chuàng)新互聯(lián)
URL鏈接:http://weahome.cn/article/cssesg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部