ARGB32位转化为RGB24位的函数(修改版)

参考的原文地址:http://blog.csdn.net/aidy22/article/details/5009563


但是按照参考文章的方法显示的图像还是上下反转了180度,以下是自己在参考文的基础上修改的,可以正常显示

BOOL CCAPDlg::Convert24Image(BYTE *p32Img, BYTE *p24Img, DWORD dxSize32, DWORD dySize32)
{

	if(p32Img != NULL && p24Img != NULL && dxSize32>0&& dySize32>0&& dxSize32%4==0)
	{
		BYTE *pTemp,*ptr;

		pTemp = p32Img;
		ptr = p24Img;

		for (int j = dySize32-1; j >=0 ; j--)
		{
			for (int i = 0; i < int(dxSize32) ; i++)
			{
				unsigned char r = pTemp[dxSize32*j*4+i*4];
				unsigned char g = pTemp[dxSize32*j*4+i*4+1];
				unsigned char b = pTemp[dxSize32*j*4+i*4+2];

				*(ptr++) = r;
				*(ptr++) = g;
				*(ptr++) = b;
			}
		}	
	}
	else
	{
		return false;
	}

	return true;
}


### 关于32ARGB32RGB的区别 在图像表示中,颜色模型通常用于定义像素的颜色属性。以下是关于32ARGB32RGB之间区别的详细说明: #### 1. **基本概念** - **32-bit RGB**: 这种格式由三个通道组成——红色 (R)、绿色 (G) 和蓝色 (B),每个通道占用8,总共占据24。剩余的8通常是未使用的填充数据,在某些实现中可能被忽略[^2]。 - **32-bit ARGB**: 此格式同样基于四个8通道,但它额外增加了一个透明度(Alpha)通道。这使得它能够支持半透明效果以及完全不透明或完全透明的效果。因此,ARGB不仅描述了颜色还包含了透明度的信息。 #### 2. **存储结构对比** 对于每一种格式来说,它们都采用四字节来代表单个像素的数据布局如下所示: ```c // 假设按照内存顺序排列 struct Pixel_RGB { unsigned char red; // R component, occupies bits [0..7] unsigned char green; // G component, occupies bits [8..15] unsigned char blue; // B component, occupies bits [16..23] }; struct Pixel_ARGB { unsigned char alpha; // Alpha channel for transparency, occupies bits [0..7] unsigned char red; // Red component, occupies bits [8..15] unsigned char green; // Green component, occupies bits [16..23] unsigned char blue; // Blue component, occupies bits [24..31] }; ``` 上述代码展示了两种不同类型的像素如何通过C语言中的`struct`进行定义[^3]。 #### 3. **应用场景差异** 由于存在alpha通道的存在与否决定了这两种模式的应用场景有所不同: - 如果只需要显示纯色而无需考虑任何层次关系或者混合操作的话,则可以选用更简单的RGB形式; - 当涉及到复杂的图形处理比如窗口叠加、游戏开发等领域时就需要利用到带alpha值的ARGB来进行精确控制[^4]。 综上所述,虽然两者都是用来表达色彩信息的方式之一,但由于后者引入了新的维度即透明程度参数从而使其功能更加全面强大适用于更多场合下使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值