现在手头有个古灵精怪的需求,有这样一个单色位图要旋转之后也存成单色
位图提供给用户:- pBmiSrc
- bmiHeader
biSize 40
biWidth 966
biHeight 576
biPlanes 1
biBitCount 16
biCompression 3
biSizeImage 0
biXPelsPerMeter 3780
biYPelsPerMeter 3780
biClrUsed 0
biClrImportant 0
- bmiColors[0]
rgbBlue 0
rgbGreen 0
rgbRed 0
rgbReserved 0 只要求旋转90度、180度之类,算法倒是不复杂,讨厌在DIB的结构我没玩转。想
用一个个象素的读写搞定,failed。放大缩小倒是用strechblt很容易实现。工程限制不能使用MFC,我用的方法是利用CImage,它的save函数野蛮到不管
源文件格式,硬存成16M色,多出一个怎样把它转换成单色的问题。要是可以
直接存成单色文件那就更好了,现在我挠头不知何处下嘴。各位请指点一二,
不胜感激。想象中的完成样子:
CImage BmpSrc,BmpDst; HBITMAP hBmpDst;
HRESULT res=BmpSrc.Load("e:\\1.bmp");
clr1=0xffffff; //背景色
hBmpDst=GetRotatedBitmap(BmpSrc,-PI/2.0,clr1);
if(hBmpDst)BmpDst.Attach(hbmpd);
if(!BmpDst.IsNull())res=BmpDst.Save("e:\\1r.bmp");
解决方案 »
- 内核可使用的和 SetupDiGetClassDevs 功能类似的函数是什么?
- win2000下IE6加载ATL做的activex控件直接红叉
- 请大家支招:如何编程实现修改IP报头的特定字段的值?
- 求救:进程隐藏失败,源码分析!
- 如何在一个CStatic上显示一个位图???(急)
- 简单CSlider Control问题
- 如何处理菜单与工具条相对应的问题(似乎有点复杂)?
- 怎么编写截获网络数据包的程序
- 那里有高手的源代码、例子程序可以下载呀?主要是通讯接口方面的,关于底层的。
- InstallShield使用dll问题
- 谁能告诉我昨天那个关于MPEG4压缩传输的帖子说的下载网址!!100分!
- 请教:这样的用法会不会产生内存泄露?
不过那是在学校
查找一些关于 BMP 的文件格式不就行了吗!
方法:
把BMP读出,不需理会fileheader和infoheader。
剩下的data就把R和B位置调转,就是一个RGB的buffer(可以做相应的操作)。save时是相反的步骤。
论坛谈VC++啊。
旋转比较多人说。特别是不用考虑抖动的,原用色就仅是
黑白的彩色位图,怎么存成1bit的黑白位图。希望大家出主意,精神上物理上都多谢了
http://www.codeguru.com/bitmap/rotate_bitmap.shtml
http://www.codeguru.com/bitmap/RotateByShear.shtml
我没试成功。即怎样调用下面一个函数来对“E:\\1.bmp”来操作?// GetRotatedBitmap - Create a new bitmap with rotated image
// Returns - Returns new bitmap with rotated image
// hDIB - Device-independent bitmap to rotate
// radians - Angle of rotation in radians
// clrBack - Color of pixels in the resulting bitmap that do
// not get covered by source pixels
HANDLE GetRotatedBitmap( HANDLE hDIB, float radians, COLORREF clrBack )若说明之外给出成功例子code加送50略表寸心,感谢另外“存为单色位图”没找到解决法子。心里不禁有小小恨MS,作CImage的时候也不想想
Save()多做几个参数选择,一存就存成16M。^_^,微软好惨,玩笑玩笑
“ 16Mbit的HBITMAP -> 存成单色位图文件 ”的问题
,给予剩下的分数;
(等价问题 "单色位图文件 - 旋转 -单色位图文件“)
多谢先~~~