急求高手解答!

ccss123321 ccss123321 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
还是bmp图片的问题。
我已经将bmp像素信息提取出来了,下面不知道怎么对应保存,比如我输入一个坐标D3DXVECTOR3(100.0f,100.0f,0.0f)怎么去对应图片上的位置并保存所对应的像素信息了?因为bmp像素信息是从左下角开始读取的。这是我的代码:
HRESULT CMapMetaSlugManager::ReadMapData( const char *str )
{
FILE *fpi;

if(fopen_s(&fpi,str,"rb") != S_OK)
{
ThrowException("no open the bmp!");
}

if(fpi != NULL)
{
WORD bfType;
fread(&bfType,1,sizeof(WORD),fpi);

if(0x4D42!=bfType)
{
ThrowException("图片格式不对!");
}

//读取bmp文件的文件头和信息头
fread(&strHead,1,sizeof(TAG_BITMAPFILEHEADER),fpi);
fread(&strInfo,1,sizeof(TAG_BITMAPINFOHEADER),fpi);

m_iBmpWidth = strInfo.biWidth;
m_iBmpHeight = strInfo.biHeight;
imagedata = (TAGIMAGEDATA*)malloc(m_iBmpWidth * m_iBmpHeight * sizeof(TAGIMAGEDATA));

//初始化原始图片的像素数组
for(int i = 0;i < m_iBmpHeight;++i)
{
for(int j = 0;j < m_iBmpWidth;++j)
{
(*(imagedata + i * m_iBmpWidth + j)).blue = 0;
(*(imagedata + i * m_iBmpWidth + j)).green = 0;
(*(imagedata + i * m_iBmpWidth + j)).red = 0;
}
}

//读出图片的像素数据
fread(imagedata,sizeof(TAGIMAGEDATA) * m_iBmpWidth,m_iBmpHeight,fpi);

//每个像素所对应的颜色值
//BMP图像的像素数据是从左下角:由左往右,由下往上逐行扫描的
int k, m, n = 0;//k:红,m:绿,n:蓝
for(int i=0; i<m_iBmpHeight; ++i)//行
{
for(int j=0; j<m_iBmpWidth; ++j)//列
{
n = (*(imagedata + i * m_iBmpWidth + j)).red;
m = (*(imagedata + i * m_iBmpWidth + j)).green;
k = (*(imagedata + i * m_iBmpWidth + j)).blue;
}
}

//保存读出来的数据即高度
{
。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。
}



fclose(fpi);

//释放内存
delete[] imagedata;
}
else
{
return NULL;
}

return S_OK;
}


请高手帮忙看看!
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
ccss123321
C++ 语言 65,214 成员 250,514 内容