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)

大家都在看

  • 每天一个 HTTP 状态码 前言

    HTTP 状态码由 3 位阿拉伯数字构成,其中第一位用于定义 HTTP 响应的类型… 前前言 在重新开始写博文(其实大多也就最多算是日常笔记小结)之际,就想着从短小精悍…

    Linux 2023年6月7日
    095
  • 不自由的自由职业

    大家好,我是良许,前码农,现在自由职业者。 有关注我朋友圈的小伙伴都知道,就在上周,我刚刚结束了长达 35 天的「假期」。 此言一出,立刻掀起了评论区留言狂潮,大家纷纷问我,你特么…

    Linux 2023年6月14日
    087
  • redis用法介绍

    Jedis常用方法API Redis命令用scan代替keys、smembers等命令 Java Spring 与 Redis 操作封装源码 Redis API 必杀解读:引入Re…

    Linux 2023年5月28日
    0104
  • Redis的slot迁移

    1) 在目标节点B 上执行,从节点A 导入slot 到节点B : CLUSTER SETSLOT8 IMPORTING src– A-node-id 对于迁移的slot…

    Linux 2023年5月28日
    072
  • 【Java】关于Maven仓库地址

    Maven仓库地址 仓库 如果你没有配置阿里云仓库镜像源,可以到这里来找 https://mvnrepository.com/ 如果你配置了阿里云仓库镜像源,可以来这里找 http…

    Linux 2023年6月14日
    0104
  • mybatis-plus详细讲解

    本文笔记都是观看狂神老师视频手敲的,视频地址:https://www.bilibili.com/video/BV17E411N7KN 学java后端的都可以去看一下,从基础到架构很…

    Linux 2023年6月7日
    0127
  • Linux文本处理相关命令

    一、文本处理命令 Linux sort命令用于将文本文件内容加以排序。 sort 可针对文本文件的内容,以行为单位来排序。 语法格式如下: sort [参数]…[文件] 相关参…

    Linux 2023年5月27日
    0100
  • UWP 自定义密码框控件

    1. 概述 微软官方有提供自己的密码控件,但是控件默认的行为是输入密码,会立即显示掩码,比如 *。如果像查看真实的文本,需要按查看按钮。 而我现在自定义的密码控件是先显示你输入的字…

    Linux 2023年6月13日
    093
  • Linux之export命令

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。 一个变量创建时,它不会自动地为在它之后…

    Linux 2023年5月27日
    0129
  • oracle删除超过N天数据脚本

    公司内做的项目是工厂内的,一般工厂内数据要求的是实时性,很久之前的数据可以自行删除处理,我们数据库用的oracle,所以就想着写一个脚本来删除,这样的话,脚本不管放在那里使用都可以…

    Linux 2023年6月7日
    0121
  • laravel源码分析-队列Queue

    队列 (Queue) 是 laravel 中比较常用的一个功能,队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短 Web 请求和响应的时间。本文我们就来分析下队列创建…

    Linux 2023年6月7日
    083
  • 分布式计算的本质、特点和未来

    在计算机早期,都是由一台主机承担全部存储和计算工作,这种方式被称为集中处理。后来随着处理器发展和网络出现,衍生出客户机/服务器架构,即由服务器完成主要的存储计算工作,客户机则负责较…

    Linux 2023年6月6日
    0122
  • Chrome的强大搜索功能

    前言 前几天一个好朋友求助我,大概问题是他的电脑QQ啥都能上网,就浏览器上不了网不是IE而是chrome,我第一反应可能是dns问题。后来发甩过来一张图,好家伙把我吓得,类似于下面…

    Linux 2023年6月14日
    0107
  • linx命令之ln 软连接 硬链接

    ln(全称:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。 当需要在不同的目录,用到相同的文件时;不需要在每一个需要的目录下…

    Linux 2023年5月27日
    0102
  • MySQL双主同步的实现

    双主复制: 在两个节点上都可以写入数据,互为主从节点。 解决单点失败的问题:一个主节点失败,所有节点都会失败。 双主配置: (1) 各节点使用一个惟一server_id (2) 都…

    Linux 2023年6月7日
    096
  • 学习一下 SpringCloud (六)– 注册中心与配置中心 Nacos、网关 Gateway

    (1) 相关博文地址: 学习一下 SpringCloud (一)– 从单体架构到微服务架构、代码拆分(maven 聚合): https://www.cnblogs.com/l-y…

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