vc 加载bmp
有一个bmp文件我想读取到一个字段charbuf[1024*1024*3]格式如下:buf={0,0,0,..................0,0,255}3个字段为一...
有一个bmp文件 我想 读取
到一个字段 char buf[1024*1024*3]
格式如下 :
buf={0,0,0,..................0,0,255}
3个字段为一个 rgb
有方法吗? 去掉head
而且我还不清楚 0,0,0 这样表示一个矩形图里的一个点 有什么专业名词么?
c++ 刚入门 要把 进来的bmp 修改 加上logo 有会的帮下忙
像素修改的代码已经想好了 就是不知道如何 读取 bmp 你知道24位 就rgb 3字节的
我现在就想获得去掉 头部分得到 我想要的字段 展开
到一个字段 char buf[1024*1024*3]
格式如下 :
buf={0,0,0,..................0,0,255}
3个字段为一个 rgb
有方法吗? 去掉head
而且我还不清楚 0,0,0 这样表示一个矩形图里的一个点 有什么专业名词么?
c++ 刚入门 要把 进来的bmp 修改 加上logo 有会的帮下忙
像素修改的代码已经想好了 就是不知道如何 读取 bmp 你知道24位 就rgb 3字节的
我现在就想获得去掉 头部分得到 我想要的字段 展开
2个回答
展开全部
要在一张BMP上加个LOGO的话建议你还是用PHOTOSHOP之类的软件加好了,自己用程序加有点麻烦;而且你还想在像素级别上修改,更加麻烦。建议你用CBitmap::LoadBitmap或LoadImage来加载一张图,然后创建一个DC,把HBITMAP选入到DC上(用SelectObject函数);你的LOGO也这么做;把LOGO的DC BitBlt到你第一个DC上就成了
===========================
嘛,很简单啊
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
这是BMP文件头,bfOffBits就是BMP像素数据的偏移了(相对于文件头)
你还要注意的是BMP中的数据是倒置的;也就是说一张图像的最后一行像素是存放到BMP文件的最开始的;另外BMP像素数据是按四字节对齐的
===========================
嘛,很简单啊
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
这是BMP文件头,bfOffBits就是BMP像素数据的偏移了(相对于文件头)
你还要注意的是BMP中的数据是倒置的;也就是说一张图像的最后一行像素是存放到BMP文件的最开始的;另外BMP像素数据是按四字节对齐的
展开全部
使用 CBitmap 装入位图。
创建一个内存DC,选中 CBitmap。
在此内存DC上加LOGO,应该就是写字,或者覆盖一张小位图,甚至修改像素点。
万事后,再用CBitmap 把位图写回,就OK了。
直接用API函数操纵即可:
LoadImage 从文件装入位图。
CreateCompatibleDC();创建兼容内存DC
SelectObject();将装入了位图文件的 位图句柄(CBitmap->GetSafeHandle)选入内存DC,
TextOut,BitBlt 等绘图操作,可以在内存DC上加你的LOGO了,
然后再通过 SelectObject() 将内存DC和位图句柄分离。
将位图存入文件有点复杂,不过也不麻烦,网上搜方法很多。
如果想像素操作,可以不用内存句柄,直接CBitmap成员就可以读取像素缓冲区地址,这个你看看msdn上面说的比较详细了。
一边查资料,一边修改代码,学起来非常快的
祝你好运。
创建一个内存DC,选中 CBitmap。
在此内存DC上加LOGO,应该就是写字,或者覆盖一张小位图,甚至修改像素点。
万事后,再用CBitmap 把位图写回,就OK了。
直接用API函数操纵即可:
LoadImage 从文件装入位图。
CreateCompatibleDC();创建兼容内存DC
SelectObject();将装入了位图文件的 位图句柄(CBitmap->GetSafeHandle)选入内存DC,
TextOut,BitBlt 等绘图操作,可以在内存DC上加你的LOGO了,
然后再通过 SelectObject() 将内存DC和位图句柄分离。
将位图存入文件有点复杂,不过也不麻烦,网上搜方法很多。
如果想像素操作,可以不用内存句柄,直接CBitmap成员就可以读取像素缓冲区地址,这个你看看msdn上面说的比较详细了。
一边查资料,一边修改代码,学起来非常快的
祝你好运。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |