[前端]圖片轉(zhuǎn)換為字符畫(huà)/文字云遇到的問(wèn)題

最近想做一個(gè)圖片轉(zhuǎn)成字符畫(huà)的功能


轉(zhuǎn)換出來(lái)的效果類似這種

在查看大佬的源碼時(shí),突然靈光一閃,想到以前在用echarts做文字云遇到的一個(gè)問(wèn)題。那個(gè)時(shí)候是使用了echarts的文字云插件庫(kù)做的(https://github.com/ecomfe/echarts-wordcloud

文字云效果

遇到的問(wèn)題就是有一些圖片上傳上去無(wú)法正常轉(zhuǎn)換成文字云。那個(gè)時(shí)候試過(guò)轉(zhuǎn)換不同格式等方法,都沒(méi)有找到問(wèn)題的根源。而這次做字符畫(huà)的時(shí)候,終于發(fā)現(xiàn)了這個(gè)問(wèn)題是出在哪。

在一位大佬關(guān)于轉(zhuǎn)換字符畫(huà)的文章里寫(xiě)到


     R = data[index],  
     G = data[index + 1],  
     B = data[index + 2],  
     gray = ~~(R * 0.3 + G * 0.59 + B * 0.11);  

代碼里也是這樣取的(整段代碼可以看大佬的原文https://blog.csdn.net/qq_27892551/article/details/50504117)而那些失敗的圖片,RGB的值都是0,但A的值是0或者255。

原圖

轉(zhuǎn)換出來(lái)失敗的圖

個(gè)人猜測(cè)這種都是二值圖像,所以沒(méi)有RGB,只有A是0或255代表黑或白。而大部分轉(zhuǎn)換為字符畫(huà)的處理(以及文字云轉(zhuǎn)換)中都忽略了A,遇到這種二值圖像得到的gray都是0,無(wú)法抽象出圖像的輪廓。
而且灰度圖像可能也會(huì)出現(xiàn)這種問(wèn)題。

所以可以增加對(duì)A的處理,當(dāng)RGB都為0,但A(A = data[index + 3] )有值的時(shí)候,gray也需要有值。可以根據(jù)A的大小來(lái)取值。這樣就可以解決這個(gè)問(wèn)題了。(echarts的文字云應(yīng)該也是同樣的問(wèn)題,但是源碼比較復(fù)雜還沒(méi)好好研究。)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容