泰山不拒細壤,故能成其高;江海不擇細流,故能成其深,全抱之末生于毫末,九層之臺起于累土,千里之行始于足下,
任何一個完善成熟的產品,都是從微小的改進開始!
Laxcus集群作業系統桌面環境一直有一個問題,就是當滑鼠移入桌面圖示區域,圖示高亮顯示后,會在周圍形成黑色或者其它什么顏色的“毛刺”,影響了整體視覺效果,對用戶體驗很不好,這個問題之前在Laxcus桌面環境上一直存在,而且有些做圖軟體也有這個問題,我仔細分析了系統源代碼,發現是底層的影像演算法問題導致,雖然放到整體環境上,不仔細看不是很明顯,但是終究是個bug,所以996加碼,這周啟動997,用了周末的兩天時間,終于把問題解決了,現在的滑鼠再移入圖形區域,已經沒有“毛刺”現象,參見下方的對比截圖,


左側:解決后無毛刺;右側:解決前有毛刺

上方:解決后無毛刺;下方:解決前有毛刺


(上方:解決前的桌面;下方:解決后的桌面)
說一下問題原因和解決思路,
所有影像都是由一個個縱橫排列的像素組成,每個像素在計算機里,都一個個整數的顏色值,現在用得比較多的是RGB色彩,這是一種工業顏色標準,是通過對紅(Red)、綠(Green)、蘭(Blue)三種顏色通道的變化和它們之間相互疊加來得到各種顏色,目前顯示幕的顏色就是由這種三基色構成,
但是對于人類來說,RGB不符合我們的視覺感受,人類對一個顏色的理解通常是,這個影像有點濃了,或者有點暗了,或者太黑、太黃、太紅了這樣抽象的解釋,所以為了適應人類的感受,就設計ESL、HSV、HSL、HSB等新的顏色標準,
這樣在計算機的計算和人類感覺之間,對于一個顏色值,就存在著轉換的問題,之前Laxcus桌面環境圖示高亮時出現的“毛刺”現象,就是因為這種轉換出現了偏差,
查閱了Laxcus集群作業系統底層的影像轉換代碼,之前使用的是RGB和ESL互換演算法,這種轉換演算法還是比較簡單,處理粒度不夠,所以出現了“毛刺”現象,改進后的影像轉換代碼,則是采用了RGB和HSL互換演算法,這種演算法更復雜,對顏色的判斷和處理更加精細,當然處理后的視覺效果也就更好,
RGB、ESL轉換演算法大致如下:
ARGB:
A:Alpha 透明度
R:Red 紅色
G:Green 綠色
B:Blue 藍色
HSL:
H:Hue 色調
S:Saturation 飽和度
L:Lightness 亮度
1. 找出一個像素的RGB三原色最大、最小值
2. 根據RGB三色值、最大、最小值,分別計算出亮度L、飽和度S、色調H,整合得出HSL
3. 調整HSL在規定值以內
4. 用傳入的色調、飽和度、亮度值,計算出調整后的HSL
5. 把HSL逆向轉回RGB,得到調整后的RGB三基色
6. 回圈上述處理,把每個像素的RGB數值寫入陣列,合成為高亮圖示,顯示在桌面上,
下面是RGB/HSL演算法轉換效果圖,共六張,三張一組,色調、飽度、亮度是隨機設定的,第一張是原圖,第二張提高飽和度和亮度后的效果圖,第三是降低飽和度和高亮后的效果圖,大家不妨感受下!
各位網友,對Laxcus桌面環境高亮圖示、影像演算法有什么意見,或者有更好的建議,歡迎在下方留言告訴我們,Laxcus集群作業系統的桌面環境正在開發中,需要各位多多支持,也歡迎點贊、轉發!謝謝!






轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/288205.html
標籤:其他
