成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

詳解使用JS如何制作簡單的ASCII圖與單極圖-創(chuàng)新互聯(lián)

ASCII圖

在莒南等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營銷型網(wǎng)站,外貿(mào)網(wǎng)站制作,莒南網(wǎng)站建設(shè)費(fèi)用合理。

在終端執(zhí)行各種命令的時(shí)候經(jīng)常會看到一些終端里顯示出來的"圖片",遠(yuǎn)看仿佛一張圖,近看則是一個(gè)個(gè)的 ASCII碼,它們 大致長這樣子

詳解使用JS如何制作簡單的ASCII圖與單極圖

而今天我們要做的則是用JS把一張給定的圖片轉(zhuǎn)換成這種用ASCII字符組成的“ASCII圖” 先看看最終效果,假設(shè)我們給定的圖片是這樣子的,

詳解使用JS如何制作簡單的ASCII圖與單極圖

這是代碼處理后的結(jié)果,用了I'mYasic這8個(gè)字符來表示,還是可以分辨出大致的輪廓的。

詳解使用JS如何制作簡單的ASCII圖與單極圖

單級圖

而另一種圖則是單極圖,也就是黑白圖片,還是剛剛那張圖片,輸出如下

詳解使用JS如何制作簡單的ASCII圖與單極圖

基礎(chǔ)知識

這兩種圖都是比較簡單的,只需要以下知識即可

  • HTML5中的Canvas
  • 像素的RGB值
  • JS中的Canvas相關(guān)API

制作ASCII圖

一般來說,在計(jì)算機(jī)當(dāng)中,我們看到的大多數(shù)圖片都是由一個(gè)個(gè)像素點(diǎn)構(gòu)成的,每一個(gè)像素點(diǎn)則由 RGBA 構(gòu)成,在 css 中我們時(shí)常用的rgba(255, 255, 255, 255, 0)就是一組RGBA值, 也即是RGB三原色和Alpha透明度。當(dāng)然一張圖片不是僅僅包含所有像素點(diǎn)數(shù)據(jù)的,還包括一些描述信息,也稱為圖片的 profile,這一部分小則幾KB,多則幾百KB,是圖片壓縮中經(jīng)常被處理的部分。

那么對于圖片中每一個(gè)像素點(diǎn)來說,只要我們改變了其相應(yīng)的RGBA的值,最終的圖片也就變了樣子。而修改哪些像素點(diǎn)、修改成什么樣的RGBA,則決定著最終的圖片風(fēng)格,這也是許多濾鏡采用的機(jī)制。

基于以上的理論知識,我們的ASCII圖制作思路也就有了。ASCII圖其實(shí)就是將一張圖中的一個(gè)像素點(diǎn),通過計(jì)算其RGBA的值,劃分成給定的幾個(gè)量化值,在這里由于我們用的I'mYasic這8個(gè)字符來表示,所以要分成8組值,每一組用一個(gè)ASCII字符來表示,最終就能組成一幅完整的ASCII圖片。

接下來就是具體的代碼實(shí)現(xiàn)。

獲取圖片的像素信息

通過 Canvas API 中的getImageData()方法我們可以獲得一個(gè)對象,這個(gè)對象的屬性里包含一個(gè)一維數(shù)組 data,這個(gè)一維數(shù)組每4個(gè)元素為一組,代表了一個(gè) canvas 中指定范圍的全部像素信息,并且依次是 RED,GREEN,BLUE,ALPHA。因此我們可以先把圖片放進(jìn) canvas 中,再調(diào)用這個(gè)方法拿到像素。

不過我很疑惑為什么 data 是一個(gè)一維數(shù)組,通常處理的圖片都是二維圖片,如果用二維數(shù)組來表示像素信息,代碼讀取和處理會方便很多,也更容易理解。甚至可以用一個(gè)三維數(shù)組,專門用一個(gè)維度來放置RGBA信息。

獲取圖片像素信息的代碼如下所示

var canvasContext = canvas.getContext("2d");
canvasContext.drawImage(sourceImg, 0, 0);
var imgData = canvasContext.getImageData(0 , 0, sourceImg.width, sourceImg.height);
var imgDataArray = imgData.data;

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(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)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站題目:詳解使用JS如何制作簡單的ASCII圖與單極圖-創(chuàng)新互聯(lián)
URL分享:http://jinyejixie.com/article12/dhdgdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、App開發(fā)、做網(wǎng)站、網(wǎng)站設(shè)計(jì)公司網(wǎng)頁設(shè)計(jì)公司、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
招远市| 乌拉特后旗| 渭源县| 北海市| 长垣县| 蓬安县| 和静县| 类乌齐县| 庄河市| 威宁| 尼木县| 垦利县| 公主岭市| 广西| 北海市| 太原市| 威信县| 砀山县| 小金县| 东宁县| 开阳县| 漾濞| 临清市| 同德县| 平遥县| 临颍县| 湄潭县| 水富县| 正安县| 巧家县| 稻城县| 那坡县| 南丹县| 顺昌县| 土默特左旗| 堆龙德庆县| 内江市| 台江县| 岳阳县| 泰兴市| 南皮县|