成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Canvas圖像識取技術以及智能化設計的思考

人工智能
熟悉前端的朋友們也許對canvas并不陌生, 接下來我會帶大家去實現如下幾個應用場景, 來深入理解canvas圖像識取技術。

[[403856]]

筆者最近一直在研究 前端可視化 和 搭建化 的技術, 最近也遇到一個非常有意思的課題, 就是基于設計稿自動提取圖片信息, 來智能化出碼. 當然本文并不會介紹很多晦澀難懂的技術概念, 我會從幾個實際應用場景出發, 介紹如何通過canvas圖像識取技術來實現一些有意思的功能. 最后會總結一些對智能化的思考以及對低代碼方向的規劃, 希望能對各位有所啟發.

canvas圖像識取技術

熟悉前端的朋友們也許對canvas并不陌生, 接下來我會帶大家去實現如下幾個應用場景, 來深入理解canvas圖像識取技術.

  • 基于圖片動態生成網站主色和漸變色
  • 基于圖片/設計稿一鍵生成網站配色方案
  • 圖像識別技術方案

基于圖片動態生成網站主色和漸變色

也許有朋友會問, 基于圖片動態生成網站主色和漸變色, 它能解決什么問題呢? 又有怎樣的應用場景呢? 這里筆者舉幾個實際應用的例子.

網易云音樂大家也許不陌生, 細心的朋友也許可以觀察到, 網站banner部分的背景, 是不是很好的和banner形成很好的統一?

我們會發現, 每個輪播圖的背景都基于當前圖片顏色進行的漸變或模糊, 來實現和輪播圖實現完美的統一. 目還有還很多類似的例子, 比如圖片網站的背景, 圖片卡片的背景, 都應用了類似的技術.

實現原理

我們知道canvas對象有3個方法:

  • createImageData() 創建新的、空白的 ImageData 對象
  • getImageData() 返回 ImageData 對象,該對象為畫布上指定的矩形復制像素數據
  • putImageData() 把圖像數據(從指定的 ImageData 對象)放回畫布上

為了分析圖片數據, 我們需要用到上述的第二個方法getImageData. ImageData 對象不是圖像,它規定了畫布上一個部分(矩形),并保存了該矩形內每個像素的信息。對于 ImageData 對象中的每個像素,都存在著四元信息,即 RGBA 值:

  • R - 紅色(0-255)
  • G - 綠色(0-255)
  • B - 藍色(0-255)
  • A - alpha 通道(0-255; 0 是透明的,255 是完全可見的)

color/alpha 信息以數組形式存在,并存儲于 ImageData 對象的 data 屬性中。

有了以上的技術基礎, 我們就完全有可能提取到圖片的顏色信息, 并分析出圖片的主色了. 所以我們的實現流程如下:

實現的參考代碼如下:

  1. img.onload = function () { 
  2.     ctx.drawImage(img, 0, 0) 
  3.     img.style.display = 'none' 
  4.     // 獲取像素數據 
  5.     let data = context.getImageData(0, 0, img.width, img.height).data 
  6.     // ImageData.data 類型為Uint8ClampedArray的一維數組,每四個數組元素代表了一個像素點的RGBA信息,每個元素數值介于0~255 
  7.     let r = 0, 
  8.         g = 0, 
  9.         b = 0 
  10.          
  11.     // 取所有像素平均值 
  12.     for (let row = 0; row < img.height; row++) { 
  13.         for (let col = 0; col < img.width; col++) { 
  14.             r += data[(img.width * row + col) * 4] 
  15.             g += data[(img.width * row + col) * 4 + 1] 
  16.             b += data[(img.width * row + col) * 4 + 2] 
  17.         } 
  18.     } 
  19.      
  20.     // 計算平均值 
  21.     r /= img.width * img.height 
  22.     g /= img.width * img.height 
  23.     b /= img.width * img.height 
  24.  
  25.     // 將結果取整 
  26.     r = Math.round(r) 
  27.     g = Math.round(g) 
  28.     b = Math.round(b) 
  29.      
  30.     // 給背景設置漸變 
  31.     bgBox.style.backgroundImage = `linear-gradient(rgb(${r}), rgb(${g}), rgb($)`; 
  32.   } 

值得說明的是, 根據不同的區值場景, 我們還可以用到其他算法諸如:

  • 平均值算法(獲取主色調)
  • 中位切分法(獲取png圖片的主色)
  • 互補色計算法

基于圖片/設計稿一鍵生成網站配色方案

以上介紹了使用canvas的取色方案, 接下來我們更進一步, 來探索一下如何基于圖片/設計稿一鍵生成網站配色方案.

其實基于以上的例子我們完全可以自己實現一套網站配色生成工具, 這里為了節約時間, 筆者推薦一款比較強大的插件, 來幫我們實現類似的功能.

沒錯, 就是colorthief, 它支持瀏覽器和node環境, 所以作為前端, 我們可以很輕松的使用它并獲取圖像/設計稿的配色方案.

github傳送門: 在線生成圖片色系方案庫

簡單的使用例子如下:

  1. import ColorThief from './node_modules/colorthief/dist/color-thief.mjs' 
  2.  
  3. const colorThief = new ColorThief(); 
  4. const img = document.querySelector('img'); 
  5.  
  6. if (img.complete) { 
  7.   colorThief.getColor(img); 
  8. else { 
  9.   image.addEventListener('load'function() { 
  10.     colorThief.getColor(img); 
  11.   }); 

該庫還有很多細化的api,比如控制生成質量, 粒度等, 我們可以以用它做一些更加智能的工具.

圖像識別技術方案

圖像識別技術可以幫助技術人員利用計算機對圖像進行處理和分析,更好地識別各種不同模式的目標。圖像識別的過程和內容是比較多的,主要包括圖像預處理和圖像分割等內容,它在圖像處理中的有效應用,還能夠根據圖像的特點對其進行判斷匹配,讓用戶能夠更加快速的地在圖片中搜索自己想要獲取的信息。

了解神經網絡的朋友可能知道, 圖像識別技術真正的解決方案是 卷積神經網絡(CNNs或ConvNets).

從圖像識別技術的術語來說就是,卷積神經網絡按照關聯程度篩選不必要的連接,進而使圖像識別過程在計算上更具有可操作性。卷積神經網絡有意地限制了圖像識別時候的連接,讓一個神經元只接受來自之前圖層的小分段的輸入(假設是3×3或5×5像素),避免了過重的計算負擔。因此,每一個神經元只需要負責處理圖像的一小部分。

當然作為前端工程師, 我們可能還涉及不到這么深的內容, 不過也不用擔心, 目前已有很多工具幫我們解決了底層的分析難題. 比如國內比較有名的imgcook, 通過識別技術來生成可被瀏覽器消費的html代碼.

其工作機制如下:

其底層識別技術也是基于對圖片信息元的分析, 提取和轉化, 來實現智能化編排的目的. 當然也有一些開源的庫可以幫我們做到一定程度的識別能力. 我們可以基于這些方案, 制作一些對開發更智能化的工具.

這里筆者提一個圖片識別的庫GOCR.js, 供大家參考學習.

GOCR.js 是 GOCR(開源的 OCR 光學識別程序)項目的純 JavaScript 版本,使用 Emscripten 進行自動轉換。這是一個簡單的 OCR (光學字符識別)程序,可以掃描圖像中的文字回文本。

該庫的使用也非常簡單, 我們只需要引入該庫, 輸入如下代碼即可:

  1. var string = GOCR(image); 
  2. alert(string); 

演示如下:

chrome-capture (1).gif(原圖)

智能化思考

最近幾年國內外lowcode和nocode平臺發展迅猛, 對于基礎的搭建化已不能滿足科技企業的需求, 智能化/自動化搭建平臺不斷涌現. 筆者之前文章 分享10款2021年國外頂尖的lowcode開發平臺 也介紹過很多國外的優秀lowcode平臺, 很多也對智能化有了很多的實踐落地. 筆者簡化如下:

最近H5-Dooring可視化編輯器也在持續推迭代, 數據源已基本搭建完成, 后續還會按照更智能化的方向, 可視化大屏V6.Dooring也已上線第一個版本.

國內lowcode平臺仍然有很長的路要走, 期待大家一起努力??!

本文轉載自微信公眾號「趣談前端」,可以通過以下二維碼關注。轉載本文請聯系趣談前端公眾號。

 

責任編輯:武曉燕 來源: 趣談前端
相關推薦

2009-08-02 22:27:59

智能住宅布線

2016-01-13 10:11:20

智能化運維運維自動化運維

2019-12-13 16:33:22

云測TestinAI

2009-08-23 21:52:37

智能化系統酒店節能綜合布線

2023-05-13 07:23:25

智能建筑物聯網

2017-03-24 11:00:49

智能化檢察官檢察機關

2021-04-26 22:34:23

數字化轉型IT技術

2017-09-20 14:58:38

弱電智能化建筑

2009-10-16 11:10:12

綜合布線系統

2022-02-14 23:18:48

人工智能交通技術

2019-02-21 10:02:35

人工智能AI機器學習

2009-10-21 09:24:36

網絡綜合布線系統

2017-03-27 15:56:59

CDN技術3.0架構網絡

2017-12-26 16:16:03

機器人制造領域智能化

2017-06-05 19:39:25

2019-08-14 08:18:49

網絡自動化智能化

2017-02-08 16:56:25

2024-09-26 19:36:58

2010-08-20 16:44:42

綜合布線

2022-12-15 10:13:24

數據智能化自動化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清在线精品一区二区三区 | 91av视频| 亚洲一区视频在线 | 国产丝袜一区二区三区免费视频 | 精品一区二区av | 国产精品一区二区av | 91视频网| 免费黄色特级片 | 99精品国产一区二区青青牛奶 | 日本黄色短片 | 中文福利视频 | 欧美日韩免费一区二区三区 | 日韩淫片免费看 | 欧洲亚洲视频 | 久久国产秒 | 精品美女久久久 | 午夜成人免费视频 | 欧美精品在线一区二区三区 | 99久久精品国产一区二区三区 | 欧美成人二区 | 久久久婷婷 | 欧美中文字幕在线 | 欧美精| 91精品国产一区二区三区 | 91精品国产综合久久精品 | 在线亚洲人成电影网站色www | 九九在线视频 | 一区免费 | 成人免费毛片片v | 亚洲美女视频 | 午夜影院在线观看 | 精品欧美一区二区在线观看 | 精品久久亚洲 | 日韩精品1区2区3区 爱爱综合网 | 男女在线网站 | 99久久婷婷国产综合精品首页 | 天堂av中文在线 | 国产日韩欧美中文 | 国产在线小视频 | 亚洲欧美日韩久久久 | 正在播放国产精品 |