最近搜索了些在内存中转换图片格式的东西,比如截屏后的bmp图片在内存中转为jpg数据流,你可以通过socket发送这段jpg内存数据流,同时,你也可以通过内存数据流逆转换。通过DibFile.h里面的两个函数完成(用的是Gdi+库):
Bitmap* CreateBitmapFromMemory(const void *buf, size_t size);
void* SaveBitmapToMemory(Bitmap *image, void **outbuf, size_t *size, size_t CodecIndex=0, ULONG quality=50);
说明:CodecIndex取值0-4,分别对应转换为jpg、bmp、gif、png、tiff格式,当为0时,参数quality有用,表示转换jpg的质量,取值0-100,数值越小,压缩比越大。注意:outbuf为指针的指针,会在内部malloc内存,以保存转换后的图片数据流。
虽然此软件中没用到这两个函数,但是测试通过。
你可以进行如下测试:把jpg图片以二进制数据读到内存中,然后通过CreateBitmapFromMemory函数构建Bitmap,然后再SaveBitmapToMemory转换为另一段内存中,把这段内存以二进制数据存入文件,并用其他看图软件打开保存后的图片。
其他说明:此软件在先前版本的基础上修正两处Bug:
1.保存图片时,若文件名含有点,会保存失败;
2.若在浏览图片时,另存图片后,滚动滚轮显示未知格式图片。
加入一个功能:保存为jpg图片时,可以选择图片质量。
有问题联系:hastings1986@163.com
1