vcbmp转jpg代码(mp4怎么转jpg)
admin 发布:2022-12-19 12:55 131
本篇文章给大家谈谈vcbmp转jpg代码,以及mp4怎么转jpg对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、VC中如何将内存中的bmp数据转化成jpg数据
- 2、vc 怎么用jpeglib.h将我截屏截下来的BMP转成JPEG?
- 3、VC用IPicture实现BMP转JPG/GIF。
- 4、VC中如何将BMP图像转化成JPG图像
- 5、VC6怎样将bmp格式图象转换为jpg格式文件
VC中如何将内存中的bmp数据转化成jpg数据
//datecompress 图片的质量(只有在转换成jpg有效) //nSize 图片缓冲区的大小(要转的图片数据大小) //PicDate 这是一个指针,指向你的图片的 unsigned int size=0;//得到图像大小 BYTE* buffers;//存储图像数据的缓冲 Bitmap *image = CreateBitmapFromMemory(PicDate,nSize); //把你的图像数据加载入内存 SaveBitmapToMemory(image,(void **)buffers,size,CodecIndex,datecompress); //转换成你要的类型,从buffers获取 //说明:CodecIndex取值0-4,分别对应转换为jpg、bmp、gif、png、tiff格式,当为0ompr时,参数datecess有用,表示转换jpg的质量,取值0-100,数值越小,压缩比越大。//这里是你的代码 ..... //这里是你的代码 delete image; delete buffers;
把这些代码放入声明
Bitmap* CreateBitmapFromMemory(const void *buf, size_t size); void* SaveBitmapToMemory(Bitmap *image, void **outbuf, size_t *size, size_t CodecIndex, ULONG quality);
把这些代码加入到你的源文件最后
vc 怎么用jpeglib.h将我截屏截下来的BMP转成JPEG?
建议你用CxImage库,这个比较好用,看你是新手,帮你把CxImage编译成DLL了,你直接调用就行了,附带一个例子给你,只需要三行代码就可以把BMP转换成JPG了,具体看我代码,用法就是下面这么简单
CxImage img;
img.Load( "mybmp.bmp" );
img.Save( "myjpeg.jpg" , CXIMAGE_FORMAT_JPG );
如果你要迁移到其它工程,只需要把CxImageInclude目录整个复制到你的工程里,然后在你的代码里增加下面两行即可(当然cximagecrt.dll和cximagecrt.lib也要复制过去,cximagecrt.lib放在你的工程目录下就行,就像我的直接放工程目录下,至于那个DLL,就要跟你的EXE放一起了,毕竟你到时会编译Release的EXE到其它地方运行的吧,把这个DLL带上就行;如果你不想带DLL,想静态将整个LIB编译进去也行,需要的时候我再帮你编译吧)
#pragma comment( lib , "cximagecrt.lib")
#include "CxImageInclude/ximage.h"
VC用IPicture实现BMP转JPG/GIF。
使用GDI+实现的在内存中进行图片格式转换。
这是我自己写的代码,绝对是可以使用的。
其中 CPicture是一个网上流行的图片类。你可以自己找一下
头文件中的定义:
private:
CImage m_Image; //频道1 CImage对象,用户在内存中进行图片压缩
CPicture m_Picture; //用于加载图片和显示图片
CDC* m_pDC1; //频道1物理DC的指针
CDC m_MemDC1; //频道1内存DC
CServerDoc* m_pDoc; //文档类指针
HBITMAP m_hBitmap; //位图句柄
CString m_ImagePath; //图片路径
BYTE m_Buffer[65536]; //频道1缓冲区
SIZE_T m_BufferSize;
该函数实现:
1:创建内存设备句柄,并与物理DC关联
2:读取磁盘上的图片文件到内存中,并画在内存DC中
3:把内存DC中的图片显示到物理DC中
4:把内存中的图片转换为JPG格式并存储到一块连续的内存区域
5:把4中连续的内存区域拷贝到频道1发送缓冲区中
*/
void CCh1View::Ch1Draw(void)
{
if(m_ServerStart==TRUE)
{
CDocument* pDoc = GetDocument();
m_pDC1=GetDC(); //获得频道1物理DC指针
m_MemDC1.CreateCompatibleDC(NULL); //创建内存DC
m_pDoc = (CServerDoc*)GetDocument();
m_pDoc-m_Bmp1.DeleteObject();
m_pDoc-m_Bmp1.CreateCompatibleBitmap(m_pDC1,320,240); //创建与频道1物理DC关联的位图
HBITMAP hBitmap=HBITMAP(m_pDoc-m_Bmp1);//获得位图的句柄
HGDIOBJ hOldBMP = ::SelectObject(m_MemDC1,hBitmap); //把该位图选入内存DC
//加载选中图片到内存
if(m_ImagePath==_T("default"))
m_Picture.Load(IDR_DEFAULT,_T("JPG"));
else
m_Picture.Load(m_ImagePath);
m_Picture.UpdateSizeOnDC(m_MemDC1);
m_Picture.Show(m_MemDC1, CPoint(0,0), CPoint(320,240), 0,0);//把图片画在内存DC中
m_pDC1-BitBlt(0,0,320,240,m_MemDC1,0,0,SRCCOPY); //把内存DC中的图片拷贝到物理DC中显示出来
m_Picture.FreePictureData();//释放资源
hBitmap=(HBITMAP)::SelectObject(m_MemDC1,hOldBMP); //获得内存中上述位图的句柄
m_Image.Attach(hBitmap); //CImage对象与上述位图关联
IStream* pStmImage = NULL; //初始化流对象
HGLOBAL hMemBmp = GlobalAlloc(GMEM_MOVEABLE,0);//申请可移动的缓冲区
if (hMemBmp == NULL) return;
CreateStreamOnHGlobal(hMemBmp, FALSE, pStmImage);//将可移动缓冲区作为流的起始
if (pStmImage == NULL)
{
GlobalFree(hMemBmp);
return ;
}
m_Image.Save(pStmImage,Gdiplus::ImageFormatJPEG); //把位图转换为JPG格式并保存在流对象缓冲区中
BYTE* pbyBmp = (BYTE *)GlobalLock(hMemBmp);//得到缓冲区的起始地址
GlobalUnlock(hMemBmp);
m_BufferSize=GlobalSize(hMemBmp); //得到格式转换后图片的大小
memcpy((void*)m_Buffer,(void*)pbyBmp,m_BufferSize);//把内存中的JPG格式图片数据拷贝到频道1发送缓冲区中
pStmImage- Release(); //释放流对象资源
GlobalFree(hMemBmp); //释放可移动缓冲区资源
if(m_Image)
m_Image.Destroy(); //销毁CImage对象
m_MemDC1.DeleteDC();//删除内存DC
m_pDC1-DeleteDC();//删除物理DC
}
}
VC中如何将BMP图像转化成JPG图像
GdiPlus的Image对象可以把图片保存成JPG或GIF之类的,应该可以满足你的需求
没办法贴网址,你自己BAIDU搜索“gdiplus图片格式转换”,第二项是
网易博客
的,里面有介绍
VC6怎样将bmp格式图象转换为jpg格式文件
BMP JPG 互转 GDI+
int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
UINT num= 0;
UINT size= 0;
ImageCodecInfo* pImageCodecInfo= NULL;
GetImageEncodersSize(num, size);
if(size== 0)
{
return -1;
}
pImageCodecInfo= (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo== NULL)
{
return -1;
}
GetImageEncoders(num, size, pImageCodecInfo);
for(UINT j=0; j num; ++j)
{
if(wcscmp(pImageCodecInfo[j].MimeType, format)== 0)
{
*pClsid= pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
return j;
}
}
free(pImageCodecInfo);
return -1;
}
CLSID encoderClsid
GetEncoderClsid(L"image/png", encoderClsid);
GetEncoderClsid(L"image/bmp", encoderClsid);
GetEncoderClsid(L"image/gif", encoderClsid);
GetEncoderClsid(L"image/jpeg", encoderClsid);
GetEncoderClsid(L"image/tiff", encoderClsid);
// =======================保存bmp图片============================
CLSID encoderClsid;
GetEncoderClsid(L"image/bmp", encoderClsid); // bmp
bmp-Save(L"c:\\dst.bmp", encoderClsid);
关于vcbmp转jpg代码和mp4怎么转jpg的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-19现在的网络推广怎么做,网络怎样做推广
- 05-19怎么在百度上发帖推广,免费百度广告怎么投放
- 05-19网站如何优化一个关键词,怎么优化一个网站关键词
- 05-19网络营销方案策划案例,网络营销方案策划案例怎么写
- 05-19网络推广怎么找客户资源,怎么在网络推广
- 05-19怎么做网站,怎么做网站教程视频
- 05-19搜索关键词,word文档怎么搜索关键词
- 05-19怎么免费创建自己的网站,怎么免费创建自己的网站平台
- 05-18百度推广官方电话,免费百度广告怎么投放
- 05-18新手怎么做网络销售,网销怎么找客户资源
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接