麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

通過javascript把圖片轉(zhuǎn)化為字符畫

2019-11-20 21:51:06
字體:
供稿:網(wǎng)友

通過javascript把圖片轉(zhuǎn)化為字符畫

1.獲取上傳圖片對象數(shù)據(jù)
Javascript無法直接獲取本地上傳的圖片的數(shù)據(jù),html5可以解決這一問題 。html5里面的FileReader interface可以把圖片對象的數(shù)據(jù)讀到內(nèi)存,然后通過接口的進度事件(Progress Events)訪問這些數(shù)據(jù)。
瀏覽器支持:
1、Internet Explorer: 10+
2、Firefox: 10+
3、Chrome: 13+
4、Opera: 12+
5、Safari: partial

復制代碼 代碼如下:

var reader = new FileReader();                        //建立一個FileReader接口 
reader.readAsDataURL(fileBtn.files[0]);        //fileBtn為文件上傳控件對象 
reader.onload = function () {                             //在onload事件中訪問圖像數(shù)據(jù) 
    img.src = reader.result;  }

2.獲取圖像對象像素點
圖像對象的getImageData 方法返回一個對象,每個像素點的 rgba 值都保存在其 data 屬性下面,這是一個一位數(shù)組, 也就是說,rgba 分別對應一個值,然后接著就是一下像素點的 rgba,假設 getImageData.data 的值為 [1,2,3,4,5,6,7,8], 那么 getImageData 對象范圍就包含了 2 個像素點,第一個像素點的 rgba 值分別是 1,2,3,4,第二個像素點的就是 4,5,6,7,8。 因此,我們在取每個像素點的 rgba 值的時候其index 應該在像素點的索引值上乘以 4,然后通過 getGray() 計算灰度。

復制代碼 代碼如下:

var imgData = c.getImageData(0, 0, img.width, img.height); 
var imgDataArr = imgData.data; 
var imgDataWidth = imgData.width; 
var imgDataHeight = imgData.height; 
for (h = 0; h < imgDataHeight; h += 12) { 
    for (w = 0; w < imgDataWidth; w += 6) { 
        var index = (w + imgDataWidth * h) * 4; 
        var r = imgDataArr[index + 0]; 
        var g = imgDataArr[index + 1]; 
        var b = imgDataArr[index + 2]; 
    } 

3.根據(jù)rgb值計算灰度
不同的RGB空間,灰階的計算公式有所不同,常見的幾種RGB空間的計算灰階的公式如下:
1、簡化 sRGB IEC61966-2.1 [gamma=2.20]
Gray = (R^2.2 * 0.2126  + G^2.2  * 0.7152  + B^2.2  * 0.0722)^(1/2.2)
2、 Adobe RGB (1998) [gamma=2.20]
Gray = (R^2.2 * 0.2973  + G^2.2  * 0.6274  + B^2.2  * 0.0753)^(1/2.2)
3、Apple RGB [gamma=1.80]
Gray = (R^1.8 * 0.2446  + G^1.8  * 0.6720  + B^1.8  * 0.0833)^(1/1.8)
4、ColorMatch RGB [gamma=1.8]
Gray = (R^1.8 * 0.2750  + G^1.8  * 0.6581  + B^1.8  * 0.0670)^(1/1.8)
5、簡化 KODAK DC Series Digital Camera [gamma=2.2]
Gray = (R^2.2 * 0.2229  + G^2.2  * 0.7175  + B^2.2  * 0.0595)^(1/2.2)

復制代碼 代碼如下:

// 根據(jù)rgb值計算灰度 
function getGray(r, g, b) { 
    return 0.299 * r + 0.578 * g + 0.114 * b; 

4.根據(jù)灰度生成相應字符
把不同的灰度替換成相應的字符,原則上灰度越深的像素應該用越復雜的字符,具體什么字符可以自由替換,這只是一個測試版本。
代碼片段:

復制代碼 代碼如下:

// 根據(jù)灰度生成相應字符 
function toText(g) { 
    if (g <= 30) { 
        return '8′; 
    } else if (g > 30 && g <= 60) { 
        return '&'; 
    } else if (g > 60 && g <= 120) { 
        return '$'; 
    }  else if (g > 120 && g <= 150) { 
        return '*'; 
    } else if (g > 150 && g <= 180) { 
        return 'o'; 
    } else if (g > 180 && g <= 210) { 
        return '!'; 
    } else if (g > 210 && g <= 240) { 
        return ';'; 
    }  else { 
        return ‘.'; 
    } 


到這次我們的工作就完成得差不多啦,上面只給出了一些代碼的片段,把原理疏通了一下,具體怎么實現(xiàn)大家可以自由發(fā)揮。猛點這里代碼下載地址

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人福利视频 | 黄色的视频免费观看 | 欧美一级高清免费 | 国产精选91 | 97zyz成人免费视频 | 中文字幕国产欧美 | 国产一级毛片国语版 | 久久久久久久亚洲精品 | 国产精品亚洲一区二区三区在线观看 | 免费看黄色三级毛片 | 成人午夜视频在线观看免费 | 国产精品视频二区不卡 | 日日天日日夜日日摸 | 高颜值美女啪啪 | 依依成人精品视频 | 久久精品免费网站 | 在线免费观看日韩视频 | 亚洲网在线 | 精品国产一区三区 | 欧美精品一区自拍a毛片在线视频 | 国产成年人在线观看 | 最新中文字幕在线 | 欧洲成人在线视频 | 日韩黄网站 | 国产精选在线 | 久久久综合视频 | 欧洲成人一区 | 在线成人www免费观看视频 | 成人 日韩| 一本色道久久综合亚洲精品图片 | 欧美一级美国一级 | 黄色高清免费 | 久久久久久中文字幕 | av在线观 | 欧美成人精品一区二区 | 久草成人在线观看 | av在线播放免费观看 | 国产精品视频yy9299一区 | 成人毛片网站 | 久久艳片| h网站在线观看 |