求救高手 内存中jpg转bmp问题 我现在在写一个能将jpg数据转换成bmp数据的程序,比如说从服务器端发送过来一个jpg格式的数据,然后在接收端要经过处理将它显示出来,所以我需要把接收到的jpg数据先转化为bmp格式然后才能进行处理,这问题烦死我了,看了GDI+但是不知道怎么用,各位高手知道的帮帮忙,解决一下问题,最好有代码,或者告诉下小弟该怎么做谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、用GlobalAlloc分配内存用于接收并缓存jpg数据2、调用CreateStreamOnHGolbal创建一个IStream接口3、调用OleLoadPicture构造IPicture接口4、调用IPicture::Render方法绘制到DC即可 但是这样只能把jpg的图像给显示出来,并没有转化为bmp格式的图像,因为我还要对jpg的图像做处理,所以需要转化为bmp 没有现成的API可用(GDI+不太熟,不清楚有没有),最好自己熟悉两种图片的格式,用代码来转换,好在这两种格式都是开放的,实现也并不复杂,这个网址可以下载转换代码 内存中的数据转化可以使用CXIMAGE或FREEIMAGE来完成,两个库都很成熟,速度也不错 如何使用CXIMAGE来对内存中的数据进行转化,从csdn上下载了一个cximage的库,里面都是头文件和cpp文件 去CODEPROJECT上找,最新的6上面有使用说明 1、用GlobalAlloc分配内存用于接收并缓存jpg数据2、调用CreateStreamOnHGolbal创建一个IStream接口 Gdiplus::Bitmap::FromStream可以构造一个GDI的图像对象,然后通过Save或者Decode类转换为位图即可 http://topic.csdn.net/u/20080730/22/9f0a2988-1c7d-4cf4-8852-492bb612e765.html GDI+ 啊?Image img = Image.FromFile("received.jpg");Bitmap bmp = Bitmap.FromImage(img);这样应该行。。 基本上就是他说的,也是最简单的方法。OleLoadPicture可以接受内存流。都绘制到DC了,你还不会怎么保存到BMP么?DC上的位图就是一个DIB,甚至不需要调用什么函数,自己加一个BITMAPFILEHEADER就可以。稍微查查GDI吧。 不是吧,opencv这么神奇,哪句话啊,说清楚点,不然不给分 要的不是显示出来,而是在内存里把JPG变成BMP,不是显示出来,也不是变成BMP文件,只是在内存转换成BMP,楼主的意思就是这样 !!!!!!高高手请进!vc中如何屏蔽如下页面的声音! 内存映射文件问题 UDP数据包怎么打包 VS2005利用SHFILEOPSTRUCT结构复制文件出错? SetWindowsHookEx内部是怎么实现的? 如何调用我的dll中的函数,,在线等待!!! 如何隐藏其中一个分割窗体? 高分请教一个问题 如何使主窗口一出来,listview中的第一条数据就自动为被选中状态,而不要用户手动去选中? 关于向导(wizard)的问题,帮帮忙! 如何才能制作漂亮的软件界面? 请问 重绘消息WM_PAINT 一般是什么时候产生,自己可以发送重绘消息吗?
2、调用CreateStreamOnHGolbal创建一个IStream接口
3、调用OleLoadPicture构造IPicture接口
4、调用IPicture::Render方法绘制到DC即可
上面有使用说明
2、调用CreateStreamOnHGolbal创建一个IStream接口 Gdiplus::Bitmap::FromStream可以构造一个GDI的图像对象,然后通过Save或者Decode类转换为位图即可
Bitmap bmp = Bitmap.FromImage(img);这样应该行。。
基本上就是他说的,也是最简单的方法。OleLoadPicture可以接受内存流。都绘制到DC了,你还不会怎么保存到BMP么?DC上的位图就是一个DIB,甚至不需要调用什么函数,自己加一个BITMAPFILEHEADER就可以。
稍微查查GDI吧。