RGB转8色16色256色

news/2024/11/8 14:38:17/

RGB色的图片有255*255*255=16581375种颜色,如果再加上透明度ARGB就要再乘以255,这么多的颜色在图形处理中有时不需要使用那么多的颜色,只需要转化成8色、16色或者256色就可以了,而透明度则作特殊处理,比如在阀值80以下的定为透明,80以上的定为不透明,透明的则用0号索引色,不透明的就用大于0的索引色,这样就在一定程度上转化了图片的颜色同时又保留了一定的透明度,在有些场景中是可以用的。下面是转化的代码.

  #region To8Color/// <summary>/// 8色化/// </summary>/// <returns></returns>public int To8Color(){//8色化处理,取RGB的高1位相与。var r1 = (R >> 5) & 0x4;var g1 = (G >> 6) & 0x2;var b1 = (B >> 7);var c = (r1 | g1 | b1) + 1;//0表示透明,1-8表示颜色索引。return c;}#endregion#region To8Color/// <summary>/// 16色化/// </summary>/// <returns></returns>public int To16Color(){//16色系统调色板://0 = RGB(0, 0, 0) = 0x00000000;//1 = RGB(128, 0, 0) = 0x00000080;//2 = RGB(0, 128, 0) = 0x00008000;//3 = RGB(128, 128, 0) = 0x00008080;//4 = RGB(0, 0, 128) = 0x00800000;//5 = RGB(128, 0, 128) = 0x00800080;//6 = RGB(0, 128, 128) = 0x00808000;//7 = RGB(128, 128, 128) = 0x00808080;//8 = RGB(192, 192, 192) = 0x00c0c0c0;//9 = RGB(255, 0, 0) = 0x000000ff;//10 = RGB(0, 255, 0) = 0x0000ff00;//11 = RGB(255, 255, 0) = 0x0000ffff;//12 = RGB(0, 0, 255) = 0x00ff0000;//13 = RGB(255, 0, 255) = 0x00ff00ff;//14 = RGB(0, 255, 255) = 0x00ffff00;//15 = RGB(255, 255, 255) = 0x00ffffff;//16色化处理,取R、G的高1位和B的高2位相与var r1 = (R >> 4) & 0x8;var g1 = (G >> 5) & 0x4;var b1 = (B >> 6) & 0x3;var c = (r1 | g1 | b1) + 1;//0表示透明,1-16表示颜色索引。return c;}#endregion#region To256Color/// <summary>/// 256色/// </summary>/// <returns></returns>public int To256Color(){var c = (int)(0.299 * R + 0.587 * G + 0.114 * B);//0表示透明,1-256表示颜色索引。c = c & 0xFF;return c;}#endregion

8色、16色和256色都需要设置对应的调色板,代码中给出了16色的调色板。具体的调色板可以依据RGB色中某些颜色的占比而设定。

转载请注明出处。


http://www.ppmy.cn/news/556354.html

相关文章

matlab 256灰度图像,MATLAB实现256色灰度图像的Arnold置乱

MATLAB实现256色灰度图像的Arnold置乱 下面的程序实现256色灰度图像的Arnold置乱。以前用VC做很麻烦&#xff0c;但在matlab中却显得非常简洁。matlab不愧是一款很受欢迎的辅助研究工具。 &#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0…

用C++实现RGB转256色

前言 RGB图片转256色&#xff0c;我知道的有两种方法&#xff1a; ①用Windows系统自带的画图工具打开图片&#xff0c;再另存为256色bmp图片 ②用Photoshop打开图片&#xff0c;然后图像→模式→索引颜色&#xff0c;选择局部&#xff08;可感知&#xff09;→确定→存储为…

256色图像不一定是灰度图像。

256色图像属于伪彩色图像&#xff0c;但是他也是8位的呀&#xff0c;他和256灰度图有什么差别&#xff1f;256色图像是如何表示颜色的&#xff1f; 灰度图像&#xff1a;每个像素由一个字节&#xff0c;即是八位&#xff0c;共256种色&#xff0c;且红绿蓝三原色分量相等。&…

32位色彩的真实含义 -- 24位色彩, 8位透明度

http://itbbs.pconline.com.cn/diy/9142730.html ----------------------------------------------------------------- 32位色彩的真实含义 -- 24位色彩, 8位透明度 32位色比24位色的色彩没有区别, 多出来的8位是用来体现半透明的程度的, GUI系统称之为Alpha Blending的.如…

诊断测试工具CANoe.DiVa从入门到精通系列——开门见山

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人们会在生活中不断攻击你。他们的主要武器是向你灌输对自己的怀疑:你的价值、你的能力、你的潜力。他们往往会将此伪装成客观意见,但无一例外的是,他们想…

Nginx 的学习与实战【一】

Nginx 的学习与实战【一】 一、Nginx 简介 1.、概述 Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx&#xff0c;它的发音为“engine X”&#xff0c;是一个高性能的HTTP和反向代理服务器&#xff0c;同时也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx是开源、高性能…

密码破解全能工具:Hashcat密码破解攻略

来源 https://www.freebuf.com/sectool/164507.html Hashcat密码破解 hashcat号称世界上最快的密码破解&#xff0c;世界上第一个和唯一的基于GPGPU规则引擎&#xff0c;免费多GPU&#xff08;高达128个GPU&#xff09;&#xff0c;多哈希&#xff0c;多操作系统&#xff08;L…

密码破解—Hashcat

一、Hashcat简介 hashcat号称世界上最快的密码破解&#xff0c;世界上第一个唯一的基于GPU、CPU规则引擎&#xff0c;免费多GPU&#xff08;高达128个GPU&#xff09;&#xff0c;多哈希&#xff0c;多操作系统&#xff08;Linux和Windows本地二进制文件&#xff09;&#xff…