我有一个软件是用来给大图像分块的,大致上是这个样子
现在呢遇到个问题就是,比如我要取上图中红框的第一块的数据,这个通过一个已经封装好的dll的接口取到了,不过呢当时为了后续其他算法,他的接口是这么设计的
BYTE* StretchData(RECT rt);
也就是说这块区域取出来呢是已经给你拉伸完的灰度值,本来倒也没什么,但是后来加了个需求,需要把这块内存图片形式输出来,于是我new了快内存将BYTE重新拉伸,大致是这样。
int* pucBuffer = new int[lBufferSize];
for (long long i = 0; i < lBufferSize; i ++ )
{
pucBuffer[i] = RGB(bVal[i],bVal[i],bVal[i]);
}
结果出来了个这鸟玩意
很明显两个问题,一个是我拉伸的不对,第二个是图片倒了,猜想bmp的存储方式起始点与他BYTE*内存的方式不一致,他的事从左上角开始的,而bmp看来是右下
在这里求一段能将这样的BYTE数组存成bmp的代码。