Laxcus集群操作系统桌面图标优化和算法

泰山不拒细壤,故能成其高;江海不择细流,故能成其深。全抱之末生于毫末,九层之台起于累土,千里之行始于足下。

任何一个完善成熟的产品,都是从微小的改进开始!

Laxcus集群操作系统桌面环境一直有一个问题,就是当鼠标移入桌面图标区域,图标高亮显示后,会在周围形成黑色或者其它什么颜色的”毛刺”,影响了整体视觉效果,对用户体验很不好。这个问题之前在Laxcus桌面环境上一直存在,而且有些做图软件也有这个问题。我仔细分析了系统源代码,发现是底层的图像算法问题导致。虽然放到整体环境上,不仔细看不是很明显,但是终究是个bug,所以996加码,这周启动997,用了周末的两天时间,终于把问题解决了。现在的鼠标再移入图形区域,已经没有”毛刺”现象,参见下方的对比截图。

Laxcus集群操作系统桌面图标优化和算法

Laxcus集群操作系统桌面图标优化和算法

左侧:解决后无毛刺;右侧:解决前有毛刺

上方:解决后无毛刺;下方:解决前有毛刺

(上方:解决前的桌面;下方:解决后的桌面)

说一下问题原因和解决思路。

所有图像都是由一个个纵横排列的像素组成。每个像素在计算机里,都一个个整数的颜色值。现在用得比较多的是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集群操作系统的桌面环境正在开发中,需要各位多多支持,也欢迎点赞、转发!谢谢!

Laxcus集群操作系统桌面图标优化和算法

Laxcus集群操作系统桌面图标优化和算法

Laxcus集群操作系统桌面图标优化和算法

Laxcus集群操作系统桌面图标优化和算法

Laxcus集群操作系统桌面图标优化和算法

Laxcus集群操作系统桌面图标优化和算法

Original: https://www.cnblogs.com/laxcus/p/14907863.html
Author: laxcus
Title: Laxcus集群操作系统桌面图标优化和算法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/577523/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 我们做了一个操作系统,不是Windows,也不是Linux

    这是一个操作系统,有和Windows一样的桌面,通过鼠标和键盘使用图形界面,但是不是Windows。 也有和Linux一样的终端,通过输入字符命令,即能处理本地的工作,还能远程操控…

    Linux 2023年6月6日
    077
  • zookeeper 配置文件详情

    目录结构 目录名作用 bin 存放系统脚本 conf 存放配置文件 contrib zk附加功能支持 dist-maven maven仓库文件 docs zk文档 lib 依赖的第…

    Linux 2023年6月8日
    061
  • 【设计模式】Java设计模式-原型模式

    【设计模式】Java设计模式 – 原型模式 😄 不断学习才是王道🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆原创作品,更多关注我CSDN: 一个…

    Linux 2023年6月6日
    0111
  • Apache手动安装教程及报错解决梳理

    下载地址(例):wget https://dlcdn.apache.org/httpd/httpd-2.4.54.tar.gz 创建安装目录:mkdir /usr/local/ap…

    Linux 2023年6月6日
    073
  • c++的bind使用方法

    c++的bind使用方法 除了容器有适配器之外,其实函数也提供了适配器,适配器的特点就是将一个类型改装成为拥有子集功能的新的类型。其中函数的适配器典型的就是通过 std::bind…

    Linux 2023年6月14日
    085
  • Linux安装jdk

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    096
  • Mybatis的递归查询实现二级评论

    最近闲来无事,在做毕业设计。前台页面需要一个评论功能,感觉三方的评论太复杂,功能也太多。就想着自己写一个简单点的,本人比较菜,方法比较笨,可能效率不高。 环境介绍 后端:Sprin…

    Linux 2023年6月8日
    095
  • 一文搞懂 Netty 发送数据全流程 | 你想知道的细节全在这里

    欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文 本系列Netty源码解析文章基于 4.1.56.Final版本 在《Netty如何高…

    Linux 2023年6月6日
    086
  • bash初始化文件详解

    本文使用的环境: Bash 4.2.46 bash启动时会执行一系列脚本, 具体要执行哪些启动文件, 这和bash的类型有关: 是否为交互式(interactive)的shell,…

    Linux 2023年6月7日
    072
  • CentOS 用户与群组

    Linux 系统中存在一个超级用户 root ,可以做任何操作。Linux 系统中每个用户都有自己独立的账户,有些命令运行需要切换 root 身份,用户是分组的。 1.1、切换用户…

    Linux 2023年6月8日
    081
  • EXCEL中vlookup函数的使用

    =LOOKUP(“座”,INDIRECT(“A1:A”&MATCH(E3,B1:B14,))) 这个公式中还嵌套了INDIR…

    Linux 2023年6月13日
    081
  • Linux 配置 IPv4或 IPv6地址

    Linux 配置 IPv4或 IPv6地址 配置 配置介绍 查看网络 ifconfig 网卡介绍 eth0 :本地网卡(CentOS7 是ens33) lo :内网网卡,管理内网I…

    Linux 2023年6月6日
    085
  • nodejs调用shell

    shelljs https://github.com/shelljs/shelljs 实例 var shell = require(‘shelljs’); if (!shell.w…

    Linux 2023年5月28日
    0100
  • Question08-查询没学过”张三”老师授课的同学的信息

    * SELECT * FROM Student WHERE SID NOT IN ( SELECT DISTINCT Student.SID FROM Student , SC ,…

    Linux 2023年6月7日
    094
  • Markdown 常用语法精讲

    标题 (# 跟标题名称一定要留空格) 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 缩进 (使用) 这是缩进四个空格文本 (源码: 这是缩进四个空格文本) 强调/加粗…

    Linux 2023年6月7日
    0123
  • [ Calibre ] 利用 Calibre LVS 检查网表正确性的最小 rule

    利用 Calibre LVS 检查网表正确性的最小 rule https://www.cnblogs.com/yeungchie/ 顶层验证前先检查网表,再跑完整流程。 check…

    Linux 2023年6月7日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球