溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

html5 解析圖片

發(fā)布時間:2020-07-10 09:12:30 來源:網(wǎng)絡 閱讀:330 作者:chen2009277025 欄目:移動開發(fā)

一 圖片預覽
HTML5給web開發(fā)帶來很多好東西,可以說,它將開創(chuàng)新一代web開發(fā)。
其中canvas就是它帶來的東西之一,canvas非常強大,可以做到很多東西。這里只是展示一個簡單的canvas效果。如下圖:
html5 解析圖片
二 原理介紹
在代碼中通過ctx.getImageData(0,0,width,height);獲取canvas里面的p_w_picpathdata對象,而這個對象就是這個效果實現(xiàn)的關鍵。
通過p_w_picpathdata.data來獲取一個數(shù)組,這個數(shù)組的length是canvas像素數(shù)量的四倍,其中每四個項代表一個像素。在每四個項里,他們一次代表rgba,rgb就很明顯了,而a就代表透明,當a為255的時候完全不透明,當a為0的時候就是透明的。而這次的效果無需用到透明,所以沒對這個進行操作。
最后通過ctx.putImageData(p_w_picpathData,0,0);把處理過的Imagedata放回去。請注意看代碼以及注釋。

  1. window.onload = function() {

  2.      

  3.        

  4.        var photo=document.getElementById("photo");

  5.        photo.onload=function(){//把圖像處理函數(shù)添加為目標圖片的onload時間,因為只有圖片已經(jīng)加載,才能用canvas對其進行操作

  6.         var cav=document.getElementById("cav");//獲取canvas對象

  7.        var ctx=cav.getContext("2d");//通過這個函數(shù)獲取canvas的上下文

  8.        

  9.        var width=parseInt(cav.getAttribute("width"));

  10.        var height=parseInt(cav.getAttribute("height"));

  11.        ctx.drawImage(this,0,0);//將圖片“畫到”canvas上去

  12.        

  13.        var p_w_picpathData=ctx.getImageData(0,0,width,height);//取得canvas的p_w_picpathData,我們就是通過這個對canvas進行像素操作的

  14.        var data=p_w_picpathData.data;

  15.        

  16.        for(var i=0,length=data.length;i<length;i=i+4)//data里面每4個數(shù)據(jù)項代表一個像素

  17.        {

  18.        data[i]=255-data[i];//紅

  19.          data[i+1]=255-data[i+1];//綠

  20.            data[i+2]=255-data[i+2];//藍

  21.        }

  22.        

  23.        ctx.putImageData(p_w_picpathData,0,0);//把p_w_picpathData再放回canvas

  24.        

  25.        }

  26.        photo.src="canvas-women.jpg";

  27.        

  28.        

  29.      }


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI