自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

新聞 前端
萬萬沒想到,如此普通的復選框,竟也能玩出這種高度!

[[430762]]

本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

萬萬沒想到,如此普通的復選框,竟也能玩出這種高度!

例如點一下復選框,屏幕就像被投入石子的水面泛出波紋:

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

設定好初始狀態(tài),就可以開始展示《生命游戲》的演化過程;

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

控制上下左右,還能還原經(jīng)典游戲《貪吃蛇》;

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

這就是一位做前端開發(fā)的小哥Bryan,近期在自己的網(wǎng)站上發(fā)布的有關checkbox (復選框)的新玩法。

這個項目在Hacker News上引來了大量網(wǎng)友評論。

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

高贊評論已經(jīng)給小朋友安排得明明白白了~

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

而面對一些諸如“為什么要用復選框,普通像素就可以達到這種效果”的質(zhì)疑,也有人為Bryan說話:

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

回到這件事本身,其實在去年早些時候,他就建了一個名為Checkboxland的JavaScript庫。

它可以將任何內(nèi)容呈現(xiàn)為HTML復選框。

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

還有更厲害的玩法

講真,剛才展示的復選框效果,只能說是“開胃菜”。

不僅僅是簡單的動畫,日常拍下的照片,記錄的生活vlog,一樣可以成為“復選框”的素材。

小哥本人也一度以為靈感耗盡,但在參閱了一篇關于將圖像轉(zhuǎn)化為ASCII的文章之后,Bryan將耐克和蘋果的logo轉(zhuǎn)化了出來(不建議轉(zhuǎn)化迪士尼的logo)。

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

小哥本人也是老二次元了,《Bad Apple》也是信手拈來:

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

隨后,自嘲“the CheckBox guy”的小哥賦予了復選框更多的可能,他又拓展了Checkboxland API,用來加載任何視頻并生成復選框版本。

下面這個看起來就像進入了《星際穿越》的五維立方體。

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

而此刻你如果打開攝像頭,Bryan還可以帶領你半只腳踏進《黑客帝國》~

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

趕快學起來,說不定還能用來畫心形圖,成為你的表白神器(不是)!

復選框花式玩法,什么原理?

看似炫酷的效果實際制作過程只需分為兩大步,手把手教你!

1.做出原本的圖像。

2.將圖像轉(zhuǎn)化為ASCII文本輸出。

以水波為例,首先要生成這樣動態(tài)的水波。

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

想要生成它,需要以中心為原點,在xy平面上建立正弦函數(shù)。

z軸垂直屏幕向外,把z軸的數(shù)值轉(zhuǎn)化為灰度,白色為波峰,黑色為波谷。

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

然后在圖形計算器desmos上讓水波動起來,這樣第一步就完成了。

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

第二步,將第一步的成果轉(zhuǎn)化為ASCII碼輸出。

這一步的轉(zhuǎn)化主要涉及到將彩色對應灰度。

采用這個公式,即使是彩色的圖片,也只不過是五彩斑斕的灰罷了~

GrayScale = 0.21 R + 0.72 G + 0.07 B

提取原圖的RGB色彩,輸出為灰度:

  1. const toGrayScale = (r, g, b) => 0.21 * r + 0.72 * g + 0.07 * b; 
  2. const convertToGrayScales = (context, width, height) => { 
  3. const imageData = context.getImageData(00, width, height); 
  4. const grayScales = []; 
  5. for (let i = 0 ; i < imageData.data.length ; i += 4) { 
  6. const r = imageData.data[i]; 
  7. const g = imageData.data[i + 1]; 
  8. const b = imageData.data[i + 2]; 
  9. const grayScale = toGrayScale(r, g, b); 
  10. imageData.data[i] = imageData.data[i + 1] = imageData.data[i + 2] = grayScale; 
  11. grayScales.push(grayScale); 
  12. context.putImageData(imageData, 00); 
  13. return grayScales; 
  14. }; 

然后為每個像素賦灰度值:

  1. const grayRamp = '$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^`\'. '
  2. const rampLength = grayRamp.length; 
  3. const getCharacterForGrayScale = grayScale => grayRamp[Math.ceil((rampLength - 1) * grayScale / 255)]; 
  4.  
  5. const asciiImage = document.querySelector('pre#ascii'); 
  6. const drawAscii = (grayScales) => { 
  7. const ascii = grayScales.reduce((asciiImage, grayScale) => { 
  8. return asciiImage + getCharacterForGrayScale(grayScale); 
  9. }, ''); 
  10. asciiImage.textContent = ascii; 
  11. }; 

最后調(diào)整一下圖片大小就大功告成了~更多詳細內(nèi)容見文后鏈接~

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

在線可玩,快來試試

在最近的更新中,Bryan稱,他創(chuàng)造新天地的事情將暫時告一段落。

但是他不僅留下了復選框新玩法原理的詳細介紹,還有自制的豐富的demos。這些足以讓你探索創(chuàng)造。

簡單的動畫,貪吃蛇,通過攝像頭實時生成復選框版圖像(demos中的webcam)…

點擊即可試玩,以貪吃蛇和webcam為例:

點擊snake,鍵盤上下左右即可控制貪吃蛇:

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

點擊webcam,打開前置攝像頭,可以看到自己的實時動態(tài):

前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫
前端小哥玩HTML復選框上癮,能畫logo做視頻,還開源成JS庫

根據(jù)網(wǎng)友的反饋,似乎在安卓系統(tǒng)中打開會白屏,但是在Mac Safari, iPhone Safari, 桌面Chrome上都可以使用。

感興趣的小伙伴,快來試試吧~

 

責任編輯:張燕妮 來源: 量子位
相關推薦

2010-01-25 10:35:12

Android復選框

2009-12-31 17:26:43

Silverlight

2009-11-24 19:12:58

PHP接收復選框信息

2012-01-06 15:18:53

Java

2024-01-12 10:25:51

PyQt6Python復選框

2022-10-09 12:00:36

開發(fā)參數(shù)

2020-11-27 07:54:53

Golang GinW

2022-04-26 10:46:53

微軟Windows 11

2012-03-08 11:23:09

jQuery Mobi

2016-12-13 10:32:33

EasyUIComboTree任務

2020-12-03 09:28:05

Golang GinW

2020-12-02 11:18:28

Golang GinW

2010-08-06 15:11:44

Flex界面控件

2020-04-21 15:11:49

視頻工具開源

2011-12-16 10:08:36

Node.js

2009-07-16 12:58:50

Swing控件

2024-06-12 08:02:36

網(wǎng)絡請求JS前端

2021-05-28 09:51:32

開源技術(shù) 工具

2009-11-17 11:24:00

PHP應用技巧

2020-11-24 08:45:04

Active Choi
點贊
收藏

51CTO技術(shù)棧公眾號