当前位置:首页 > 代码 > 正文

vcbmp转jpg代码(mp4怎么转jpg)

admin 发布:2022-12-19 12:55 131


本篇文章给大家谈谈vcbmp转jpg代码,以及mp4怎么转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站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/8423.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载