alphaRGB 转 RGB、16位
struct xColor
{
BYTE b, g, r, a;
};
struct RGBColor
{
BYTE b, g, r;
};
//void operator <<(RGBColor& rgb, xColor& color)
//{
// rgb.r = color.a * 1.0 / 0xFF * color.r;
// rgb.g = color.a * 1.0 / 0xFF * color.g;
// rgb.b = color.a * 1.0 / 0xFF * color.b;
//}
void operator <<(RGBColor& rgb, xColor& color)
{
rgb.r = 0xFF;
rgb.g = 0x0;
rgb.b = 0x0;
}
void alphaRGB2RGB(unsigned char* src, unsigned char* dest, int sizePixel)
{
assert(src != NULL && dest != NULL);
xColor* pColor = (xColor*)src;
RGBColor* pRGBColor = (RGBColor*)dest;
while (--sizePixel >= 0)
{
*pRGBColor << *pColor;
//printf("pColor r[%d] g[%d] b[%d] a[%d]\n", pColor->r, pColor->g, pColor->b, pColor->a);
//printf("prgbColor r[%d] g[%d] b[%d]\n", pRGBColor->r, pRGBColor->g, pRGBColor->b);
++pRGBColor;
++pColor;
}
}
unsigned short
RGB888toRGB565(xColor& color)
{
unsigned short B = ( (color.a / 0xFF * color.b) >> 3) & 0x001F;
unsigned short G = (( (color.a / 0xFF * color.g) >> 2) << 5) & 0x07E0;
unsigned short R = (( (color.a / 0xFF * color.r) >> 3) << 11) & 0xF800;
return (unsigned short) (R | G | B);
}
void alphaRGB2RGB565(unsigned char* src, unsigned char* dest, int xWidth, int yHeight, int nLineWidthByte)
{
assert(src != NULL && dest != NULL);
printf("xWidth[%d] xHeight[%d] nLineWidthByte[%d]", xWidth, yHeight, nLineWidthByte);
xColor* pColor = (xColor*)src;
BYTE* pDstLineByte = (BYTE*)dest;
for(int y =0; y < yHeight; ++y)
{
unsigned short* pDstPixel = (unsigned short*)pDstLineByte;
for(int x = 0; x < xWidth; ++x)
{
*pDstPixel = RGB888toRGB565(*pColor);
++pDstPixel;
++pColor;
}
pDstLineByte += nLineWidthByte;
}
}
unsigned short
RGB888toRGB565(unsigned char red, unsigned char green, unsigned char blue)
{
unsigned short B = (blue >> 3) & 0x001F;
unsigned short G = ((green >> 2) << 5) & 0x07E0;
unsigned short R = ((red >> 3) << 11) & 0xF800;
return (unsigned short) (R | G | B);
}
alphaRGB 转 RGB、16位的更多相关文章
- 如何将24位RGB颜色转换16位RGB颜色
有许多朋友第一次使用16位彩色显示屏会遇到如何将24位RGB颜色转换为对应的16位RGB颜色的问题, 通过查阅相关资料,就写一下其中的转换原理吧,希望对大家会有所帮助. 我们知道24位RGB是分别由8 ...
- bmp文件格式中rgb555与rgb888之间的转换,24位与16位位图的转换
今日,有同事问我.rgb555模式下的位图文件的格式问题,于是花了一下午的时间通过推測与測试,分析出了例如以下bmp文件在rgb555模式下的文件存储规律: 1:bmp文件的文件信息头中的biBitC ...
- 颜色模式中8位,16位,24位,32位色彩是什么意思?会有什么区别?计算机颜色格式( 8位 16位 24位 32位色)<转>
颜色模式中8位,16位,24位,32位色彩是什么意思?会有什么区别简单地说这里说的位数和windows系统显示器设置中的颜色位数是一样的.表示的是能够显示出来的颜色的多少. 8位的意思是说,能够显示出 ...
- AM335X用RGB888连接LCD如何以16位色彩模式显示图片
在AM335x中,在连接显示屏的时候,存在一个问题.这个在am335x Sillicon Errata已经提到过 在RGB888模式中 而对于RGB565模式的硬件连接 不难看出,这个RGB是反的 ...
- 使用 GCC 和 GNU Binutils 编写能在 x86 实模式运行的 16 位代码
不可否认,这次的标题有点长.之所以把标题写得这么详细,主要是为了搜索引擎能够准确地把确实需要了解 GCC 生成 16 位实模式代码方法的朋友带到我的博客.先说一下背景,编写能在 x86 实模式下运行的 ...
- C# GUID转换成16位字符串或19位数字并确保唯一
/// <summary> /// 根据GUID获取16位的唯一字符串 /// </summary> /// <param name=\"guid\" ...
- 16位汇编 多文件 intel汇编 编译器masm5.0 调用子程序库即静态库的自定义函数 WINDOWS
;以下是16位汇编 创建静态库,并调用静态库中的函数 ;多文件汇编格式 ;编译方法(此处用的是masm 5.0,如果是其他的编译器,有可能不能编译) ;第一种,编译方法 ;1.masm main.as ...
- [ZigBee] 5、ZigBee基础实验——图文与代码详解定时器1(16位定时器)(长文)
1.定时器1概述 定时器1 是一个支持典型的定时/计数功能的独立16 位定时器,支持输入捕获,输出比较和PWM等功能.定时器有五个独立的捕获/比较通道.每个通道定时器要使用一个I/O 引脚.定时器用于 ...
- zzy:java采用的是16位的Unicode字符集作为编码方式------理解
java语言使用16位的Unicode字符集作为编码方式,是疯狂Java中的原话. 1,编码方式只是针对字符类型的(不包括字符串类,数值类型int等,这些只是在解释[执行]的时候放到Jvm的不同内存块 ...
- [Effective JavaScript 笔记] 第7条:视字符串为16位的代码单元序列
Unicode编码,基础:它为世界上所有的文字系统的每个字符单位分配一个唯一的整数,该整数介于0~1114111之间,在Unicode术语中称为代码点(code point). 和其它字符编码几乎没有 ...
随机推荐
- 1不等于1?numeric、decimal、float 和 real 数据类型的区别
大家有没有在SQL中遇见1不等于1(1<>1)的情形!?下面会有一个例子演示这个情形. 先简单介绍一下标题中的四种数值数据类型. 在T-SQL中,numeric和decimal是精确数值数 ...
- 慕课网-Java入门第一季-6-10 练习题
来源:http://www.imooc.com/ceping/1596 以下关于二维数组的定义和访问正确的是() A int[ ][ ] num = new int[ ][ ]; B int[ ][ ...
- Android IOS WebRTC 音视频开发总结(八十六)-- WebRTC中RTP/RTCP协议实现分析
本文主要介绍WebRTC中的RTP/RTCP协议,作者:weizhenwei ,文章最早发表在编风网,微信ID:befoio 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID ...
- JAVA-系统-【2】-创建自增长的用户表
[2]创建数据库表 用户表 自增 1.用户表结构 数据excel 表1 2.创建表 Create table A_USER( id number primary key, username ) n ...
- rabbitMQ学习(六)
请求模式 客户端: import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; impor ...
- Windows 2008 server IIS 7 中开启CGI, ISAPI
默认情况下,IIS是没有开启的,需要通过下面的步骤开启
- python使用代理ip发送http请求
一.需求背景 网站刷票时,经常会遇到限制一个ip只能投票一次的限制,为此需要使用代理ip 二.脚本如下: 1.Proxy_http.py使用代理ip发送httpr的get和post请求 #coding ...
- SQL Lazy Spool Eager Spool
https://www.simple-talk.com/sql/learn-sql-server/showplan-operator-of-the-week-lazy-spool/ The Lazy ...
- C语言基础补习
coolshell 中一个小例子在VC6.0编译后反汇编结果仅作记录: 源码: #include <stdio.h> int main(void) { ]; printf("%x ...
- Button模板,样式
一.button控件上的模板 <Button Content="Button" Height="25" HorizontalAlignment=" ...