[前端]圖片轉換為字符畫/文字云遇到的問題

最近想做一個圖片轉成字符畫的功能


轉換出來的效果類似這種

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

文字云效果

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

在一位大佬關于轉換字符畫的文章里寫到


     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。

原圖

轉換出來失敗的圖

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

所以可以增加對A的處理,當RGB都為0,但A(A = data[index + 3] )有值的時候,gray也需要有值。可以根據(jù)A的大小來取值。這樣就可以解決這個問題了。(echarts的文字云應該也是同樣的問題,但是源碼比較復雜還沒好好研究。)

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容