Direct2D 11 8bit 灰度图,求大佬~~!

博主在博客中寻求帮助,关于使用Direct2D 11进行8位灰度图像处理时遇到困扰,希望社区的大佬能提供指导。代码展示可能不够清晰,但博主表达了急切需求。

`Direct2D 11 8bit 灰度图,求大佬~~!`


现在我有一个8bit的bmp灰度图的buffer,要求使用D2D bitmap搞出来
自己尝试后发现只有WIC的Format才支持8bit灰度,D2D的位图创建里面没有
已经有一种解决办法是修改buffer,使原8bit单通道变成RGBA 32bit 4通道,
就能用DXGI_FORMAT_R8G8B8A8_UNORM这个枚举成功创建位图实例
但是同样的值多存了3份,这个就有点过分了。。所以我想知道还有没有其他方法

拜托各位大佬了,给你们下跪了
:ஐ٩(๑´ᵕ`)۶ஐ:

	LONG width = 0, height = 0;
	WORD bitCount = 0;
	RGBQUAD* quad = NULL;
	//这里是模拟外面传进来的buffer
	unsigned char* buffer = readBmp("F://F5Z//D3D_test//D3D_x64//Picture//test3.bmp", &width, &height, &bitCount, quad);
	//转32位RGBA位图数据
	ChangeTo32bitGrayBitMap(buffer, width, height);
	ComPtr<ID2D1Bitmap> tmp = NULL;

	//指定RGB格式
	D2D1_PIXEL_FORMAT pixelFormat = D2D1::PixelFormat(
		DXGI_FORMAT_B8G8R8A8_UNORM,
		D2D1_ALPHA_MODE_IGNORE
	);
	//设置属性
	D2D1_BITMAP_PROPERTIES property;
	property.pixelFormat = pixelFormat;
	property.dpiX = 0;
	property.dpiY = 0;

	D2D1_SIZE_U size;
	size.width = width;
	size.height = height;
	
	bitCount = 32;
 	m_d2drender->CreateBitmap(
			size,
			buffer,
			bitCount / 8 * width,
			property,
			&tmp
		);
		
	delete[] buffer;

代码比较乱,只是表示个意思哈,将就一下~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值