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色中某些颜色的占比而设定。

转载请注明出处。

RGB转8色16色256色相关推荐

  1. 单色位图、16色位图、256色位图的含义

    在WIndows下的画图工具中绘制完图片后,另存为的时候有以下几种选项: 这些分别代表什么含义呢? 单色位图: 每个像素最多可以表示2种颜色,只需要使用长度为1的二进制位来表示,因此每个像素占1/8b ...

  2. 如何把RGB图像的256色减少为16色、32色、64色

    使用MATLAB函数imapprox,imapprox是指通过减少颜色数量来近似处理索引图像. 语法: [Y,newmap] = imapprox(X,map,Q) 索引图像有两个分量:整数数据矩阵X ...

  3. 基于c语言256色转16色,在16色模式下显示256色及全彩色

    摘 要 该文描述了在vga16色图形模式下显示256色及全彩色图像的抖动算法,并给出了显示bitmap图像的c语言程序. 在编写有关图像显示的软件时,有时为了软件的兼容性和通用性,不得不采用vga标准 ...

  4. 16位增强色RGB转换为24/32位真色彩

    biBitCount=16 表示位图最多有65536种颜色.每个色素用16位(2个字节)表示.这种格式叫作高彩色,或叫增强型16位色,或64K色.它的情况比较复杂,当biCompression成员的值 ...

  5. 用C++实现RGB转256色

    前言 RGB图片转256色,我知道的有两种方法: ①用Windows系统自带的画图工具打开图片,再另存为256色bmp图片 ②用Photoshop打开图片,然后图像→模式→索引颜色,选择局部(可感知) ...

  6. 256色,16,24,32位色的名词解释

    任何一种平台下的的电子游戏,画面表现形式的最小单位就是象素,每个游戏画面都是无数的象素组成,每个象素不停的刷新变换色彩,便形成了生动的游戏画面.   游戏象素的发展史-- 256 色:最早期的游戏象素 ...

  7. RGB颜色与16进制色以及透明色

    转载请标明出处:http://blog.csdn.net/liang5630/article/details/43483331 ,本文出自:[刘宏亮的博客] RGB颜色与16进制色以及透明色是我们在开 ...

  8. RGB 565格式的256色颜色表代码表

    由于使用TFT屏的8bpp模式所需,找了256色颜色表的代码表(24bpp),并将其转换成16bpp格式,实测可用 找到的 256色颜色表的代码表(24bpp)https://jonasjacek.g ...

  9. iOS开发:RGB专栏(RGB与16进制色互转)

    iOS开发中,除了使用固定的基本颜色之外,常常也需要使用自定义的颜色,那么这就涉及到了RGB的色值使用问题. 一.对RGB的色值使用的时候,可将对颜色的设置定义成宏(设置宏定义),方便开发使用,eg: ...

最新文章

  1. JS计算起点坐标到终点坐标的驾车距离和驾车时间
  2. TCP三次握手Render Tree页面渲染=从输入URL到页面显示的过程?
  3. python中面向对象空间时间_零基础老男孩学Python|面向对象之类的空间问题
  4. 如何在 macOS Monterey 中管理应用程序和联系人的 Mac 通知?
  5. 51单片机入门——DS18B20
  6. 对接海康人脸识别api接口之PHP案例
  7. TMS320F280049C 学习笔记21 交叉开关 Crossbar (X-BAR)
  8. iOS 防键盘遮挡
  9. python实现最小二乘法的线性回归_Python中的线性回归与闭式普通最小二乘法
  10. 如何将html转换成url,HTML之Data URL(转)
  11. 《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf
  12. java apdu读取社保卡_使用javax.smartcardio的用于智能卡的ISO 7816 APDU
  13. 手机号码归属地查询(php+redis)
  14. 手写Vue个人组件库——fl-Lazyimg 图片懒加载
  15. Stable Diffusion 图像生成测试
  16. Kafka SASL/SCRAM动态认证集群部署
  17. 删除数组最后一个元素
  18. 团队管理11--管理规划四要素及四步走
  19. 让Python使用Bing翻译API V2
  20. 江西计算机对口升学试题,2020年江西三校生对口升学考试真题+答案

热门文章

  1. 月球公转与自转(二)
  2. 解决360断网急诊强力修复后无法上网的问题
  3. Jackson - 将 JSON 字符串转换为 Map
  4. Python 技术篇-用mutagen库提取MP3歌曲图片实例演示
  5. CityEngine城市引擎
  6. windows10系统解除微软账户和本地账户绑定
  7. 解决Windows11/10本地账户改用Microsoft账户登录显示“发生了错误”的问题
  8. C++动态规划算法之0-1背包问题
  9. struts2不能请求路径
  10. Heatmap Plot with ggplot2 【R】