WINCE下图片格式转换
在PC上似乎可以用过CImage类进行图片格式的转换。。
但是WINCE上似乎是不支持这个类的。。
我的想法是这样的。。。
我通过IImage将各种格式的图片画在内存画布上。。
然后将内存画布上的图像转为16为bmp文件。。
首先我不大确定这个方法是否可行- -
我现在是卡在。。不知道怎么把内存画布上的图像数据转为bmp数据
求大神帮忙。。。。
当然getpixel。。。这种比较暴力的方法。。似乎可行。。。但是。。。。。。
[解决办法]
本人可以做WINCE下BMP,JPG/JPEG,GIF,PNG的图片格式转换
[解决办法]
用IImage组件就可以,需要wince添加了相应图片格式的编解码器。
[解决办法]
可以用cximage
[解决办法]
假设你的内存画布HDC为hDCMem,也可以通过如下方式取得:
//图形所在的窗口句柄hWnd
HDC hDC = GetDC(hWnd);
HDC hDCMem = CreateCompatibleDC(hDC);
BYTE *pBits;
//按照你自己的屏幕图像格式来填充BITMAPINFO
LPBITMAPINFO lpbmih = new BITMAPINFO;
lpbmih->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
lpbmih->bmiHeader.biWidth = iW; //这里对应你自己图形区域宽
lpbmih->bmiHeader.biHeight = iH; //这里对应你自己图形区域宽
lpbmih->bmiHeader.biPlanes = 1;
lpbmih->bmiHeader.biBitCount = 16;
lpbmih->bmiHeader.biCompression = BI_BITFIELDS;//for RGB565
lpbmih->bmiHeader.biSizeImage = iW*iH*lpbmih->bmiHeader.biBitCount/8;
lpbmih->bmiHeader.biXPelsPerMeter = 0;
lpbmih->bmiHeader.biYPelsPerMeter = 0;
lpbmih->bmiHeader.biClrUsed = 0;
lpbmih->bmiHeader.biClrImportant = 0;
//如果有调色板的还要填充调色板
//最关健就是下面这句,从屏幕上取到相应的图像数据,存放在pBits
HBITMAP hBmpMem = CreateDIBSection(hDCMem, lpbmih, DIB_RGB_COLORS, (void **)&pBits, NULL, 0);
//接下来就好办了,只要加BMP文件头就行了(我就省了)