精华内容
下载资源
问答
  • C++中保存为jpg文件的方法
    千次阅读
    2019-04-01 11:15:32

    c++中,将像素矩阵直接写入jpg文件比较麻烦,从网上找到一个高手的方法,代码不多,推荐一下。

    https://create.stephan-brumme.com/toojpeg/

    感谢造轮子的人。

    更多相关内容
  • C++ JPG等图片

    2014-11-07 11:48:39
    .net 2008 C++ 读取JPG等格式图片
  • C++在内存中将bmp转JPG

    2019-03-04 18:28:44
    C++在内存中将bmp转JPG。 VS2013,mfc,将大的bmp或者jpg用opencv读取、缩小后保存为bmp,再将bmp转jpgjpg数据是在内存中的 bmp转jpg
  • 打开jpeg的文件流,根据jpeg的文件格式,用跳段的方式查找文件流中的标识符,速度快。在其他开发者的版本上进行了修改和完善,能处理更多的jpeg格式,并且更健壮,并加入了png格式的处理。
  • 该程序将 BMP/TIFF/JPG/PNG 文件转换为嵌入的 C/C++ 字节数组。 当您想在显示器上显示单色图像时,这非常有用。 它在数据数组生成之前将您的图像转换为单色。 源图像中较暗的颜色将产生“开”像素,而较亮的颜色将...
  • 网上找到的比较常见的jpg转bmp的C语言代码(出处不详),做了小的改动,包成一个函数,可以将一个jpg文件经过解码,可以得到相应的将RGB数据和尺寸数据。 工程是用vs2013建立的。
  • C++实现的压缩、解压缩算法,只有几个cpp、h文件,非常小巧,方便学习算法用。
  • C++实现jpeg编码解码

    2018-07-13 21:45:25
    网络多媒体课程,使用C++实现jpeg编码解码。简单易懂。
  • 主要介绍了C++实现读取图片长度和宽度,本文直接给出实现代码,需要的朋友可以参考下
  • 由于定标图像太大,没有上传,只有代码,可以打开JPG格式图片,负有相应的操作说明,主要是计算机视觉方面定标程序
  • Linux jpg转bmp

    2018-11-22 14:36:14
    centos7下jpg图像转bmp,调用的是libjpeg-turbo库,代码齐全。解析为bmp时,bmp需要4字节对齐,这里我的做法是,假如一个jpg的tup宽度是157,我这边是将图片扩展为160个像素。代码语言C++
  • JPEG解码类 C++

    2015-11-29 16:21:25
    这是我自己编写的JPEG解码类,解码速度不是太快,只支持baseline类型JPEG解码,可以帮助初学者了解JPEG解码流程。本人水平有限,望批评指正,共同学习。赚积分不容易,望搬运工放过小的,在此谢过,跪谢。
  • 主要介绍了tensorflow之读取jpg图像长和宽实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 本程序借助libpng和libjpeg库 ,以C++类的方式实现linux下对png jpg和bmp常见类型的图像文件的读写。要在程序中显示图像可自行用opengl或其他方式完成。
  • Jpg加载、显示c++

    2009-11-07 17:12:54
    本类可以加载多种图像文件如:jpg 、bmp 、gif等,且还可以加载一批图像文件。若有不明白的地方请看附带的示例工程项目,以帮助大家理解!或者通过邮箱给我发送邮件!若其中给大家造成错误引导,在此致歉了! 希望...
  • fp = fopen("Pic.jpg", "wb"); fwrite(DstBuffer, ValidByteSize, 1, fp);//DstBuffer是图像数据内存地址,ValidByteSize是图像字节数大小 fclose(fp); 完整测试程序,但图像数据采集、格式转换都是用的相机厂商...
    FILE* fp;
    fp = fopen("Pic.jpg", "wb");
    fwrite(DstBuffer, ValidByteSize, 1, fp);//DstBuffer是图像数据内存地址,ValidByteSize是图像字节数大小
    fclose(fp);

     完整测试程序,但图像数据采集、格式转换都是用的相机厂商提供的SDK接口,并不通用

    #include<DVPCamera.h>
    #include <conio.h>//_kbhit
    #include <fstream>
    #include <iostream>
    using namespace std;//cout
    
    #ifdef _M_X64// 加载 64 位 LIB 库
    #pragma comment(lib, "DVPCamera64.lib")
    #else // 加载 32 位 LIB 库
    #pragma comment(lib, "DVPCamera.lib")
    #endif
    
    dvpStatus status_t;//相机状态
    dvpHandle CameraHandle_t;//相机句柄
    dvpFrame Frame_t;//帧信息
    void* Buffer_t;//帧地址
    
    //定义事件回调
    dvpInt32 dvpEventCallback_t(dvpHandle handle, dvpEvent event, void* pContext, dvpInt32 param, struct dvpVariant* pVariant)
    {
    	printf("事件回调执行\n");
    	return 0;
    }
    
    int main()
    {
    	dvpUint32 n = 0;
    	dvpRefresh(&n);//刷新相机并获取已连接的相机数量
    	dvpOpen(0, dvpOpenMode(OPEN_NORMAL), &CameraHandle_t);//打开相机
    
    	status_t=dvpSetSourceFormat(CameraHandle_t, S_RAW12);
    	status_t=dvpSetTargetFormat(CameraHandle_t, S_RAW16);
    
    	//注册事件回调
    	dvpRegisterEventCallback(CameraHandle_t, dvpEventCallback_t, EVENT_FRAME_END, NULL);
    
    	dvpStart(CameraHandle_t);//启动视频流
    
    	while (1)
    	{
    		n = _getch();//不阻塞版input
    		printf("%d", n);
    		if (n == 13)//Enter键
    		{
    			
    			//status_t = dvpSavePicture(&Frame_t, Buffer_t, "DvpSave.jpg", 100);
    
    			void* DstBuffer = new unsigned char[Frame_t.iWidth * Frame_t.iHeight];//[out]输出到用户指针图像的数据
    			dvpUint32 ByteSize = Frame_t.iWidth * Frame_t.iHeight;//[in]指导用户图像缓存的字节数
    			dvpUint32 ValidByteSize=0;//[out]输出到用户图像缓存的实际有效字节数
    
    			dvpStr strFormat = "jpg";
    			status_t = dvpPrintPictureToBuffer(&Frame_t,Buffer_t, strFormat,100, DstBuffer, Frame_t.uBytes, &ValidByteSize);
    			/*
    			将相机原始帧图像数据格式转换为其他格式(目前支持的数据格式包括:FORMAT_MONO、FORMAT_BAYER_BG、FORMAT_BGR24)
    			[in] pFrame 帧信息
    			[in] pBuffer 图像数据的内存首地址
    			[in] hWnd 用于显示图像的窗口句柄
    			[in] sRect 用于显示的图像区域,空指针代表整个图像区域
    			[in] dRect 用于显示的窗口区域,空指针代表整个窗口区域
    			*建议在dvpStreamCallback 视频流回调函数中使用此功能
    			*/
    
    			FILE* fp;
    			fp = fopen("Pic.jpg", "wb");
    			fwrite(DstBuffer, ValidByteSize, 1, fp);//转换格式后直接写入为本地图像文件
    			fclose(fp);
    
    			continue;
    		}
    		if (n == 103)//G
    		{
    			dvpGetFrame(CameraHandle_t, &Frame_t, &Buffer_t, 3000);//获取一帧图像
    		}
    		if (n==116)//T
    		{
    			dvpTriggerFire(CameraHandle_t);
    		}
    		if (n == 27)//ESC键
    		{
    			break;
    		}
    	}
    
    	dvpStop(CameraHandle_t);//停止视频流
    	dvpClose(CameraHandle_t);//关闭相机
    	return 0;
    }

    展开全文
  • 使用C++对NV12序列进行转换,快速转换成YUV420和YUV444,不依赖第三方库。 内附实例,可以直接运行
  • 【最新】C++ 控制台程序,获取bmp, png, jpg图片的宽高值
  • C++ BMP转JPG

    2020-10-24 22:13:13
    #include <atlimage.h> unsigned long BMP2JPEG(const char* pUnZipData, unsigned long ulUnZipDataLen, std::string& jpgData) { unsigned long ulBufferLen = 0; HGLOBAL hGlobal = GlobalAlloc(GMEM...
    #include <atlimage.h>
    unsigned long BMP2JPEG(const char* pUnZipData, unsigned long ulUnZipDataLen, std::string& jpgData)
    {
    	unsigned long ulBufferLen = 0;
    	HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, ulUnZipDataLen);
    	void* pData = GlobalLock(hGlobal);
    	memcpy(pData, pUnZipData, ulUnZipDataLen);
    	GlobalUnlock(hGlobal);
    	IStream* pStream = NULL;
    	if (CreateStreamOnHGlobal(hGlobal, TRUE, &pStream) == S_OK)
    	{
    		CImage image;
    		if (SUCCEEDED(image.Load(pStream)))
    		{
    			IStream* pOutStream = NULL;
    			if (CreateStreamOnHGlobal(NULL, TRUE, &pOutStream) == S_OK)
    			{
    				image.Save(pOutStream, Gdiplus::ImageFormatJPEG);
    				HGLOBAL hOutGlobal = NULL;
    				GetHGlobalFromStream(pOutStream, &hOutGlobal);
    				LPBYTE pBits = (LPBYTE)GlobalLock(hOutGlobal);
    				ulBufferLen = (DWORD)GlobalSize(pBits);
    				char *pBuffer = new char[ulBufferLen];
    				memcpy(pBuffer, pBits, ulBufferLen);
    				jpgData = std::string(pBuffer, ulBufferLen);
    				delete pBuffer;
    				pBuffer = nullptr;
    				GlobalUnlock(hOutGlobal);
    				pOutStream->Release();
    			}
    		}
    		pStream->Release();
    	}
    	GlobalFree(hGlobal);
    	return ulBufferLen;
    }
    
    
    
    展开全文
  • VC GDI+ 窗口截图内存BMP转JPG,压缩、JPG再转IStream流,IStream流再转 BYTE 上体见 http://blog.csdn.net/q610098308/article/details/78181933
  • JPG图片解码

    2015-11-19 17:10:11
    JPG图片解码
  • c++ 抓取桌面屏幕并转为jpg图片

    千次阅读 2019-10-10 12:06:50
    jpg_size){ HWND DeskWnd=::GetDesktopWindow();//获取桌面窗口句柄 RECT DeskRC; ::GetClientRect(DeskWnd,&DeskRC);//获取窗口大小 HDC DeskDC=GetDC(DeskWnd);//获取窗口DC H...
    抓取屏幕代码
    char* getScreen(unsigned long &jpg_size){	
    	HWND DeskWnd=::GetDesktopWindow();//获取桌面窗口句柄
    	 RECT DeskRC;
    	::GetClientRect(DeskWnd,&DeskRC);//获取窗口大小
    	HDC DeskDC=GetDC(DeskWnd);//获取窗口DC
    	HBITMAP DeskBmp=::CreateCompatibleBitmap(DeskDC,DeskRC.right,DeskRC.bottom);//兼容位图
    	HDC memDC=::CreateCompatibleDC(DeskDC);//兼容DC
    	SelectObject(memDC,DeskBmp);//把兼容位图选入兼容DC中
    	BitBlt(memDC,0,0,DeskRC.right,DeskRC.bottom,DeskDC,0,0,SRCCOPY);
    	BITMAP bmInfo;
    	DWORD bmDataSize;
    	char *bmData;//位图数据
    	GetObject(DeskBmp,sizeof(BITMAP),&bmInfo);//根据位图句柄,获取位图信息
    	bmDataSize=bmInfo.bmWidthBytes*bmInfo.bmHeight;//计算位图数据大小
    	bmData=new char[bmDataSize];//分配数据
    	BITMAPFILEHEADER bfh;//位图文件头
    	bfh.bfType=0x4d42;
    	bfh.bfSize=bmDataSize+54;
    	bfh.bfReserved1=0;
    	bfh.bfReserved2=0;
    	bfh.bfOffBits=54;
    	BITMAPINFOHEADER bih;//位图信息头
    	bih.biSize=40;
    	bih.biWidth=bmInfo.bmWidth;
    	bih.biHeight=bmInfo.bmHeight;
    	bih.biPlanes=1;
    	bih.biBitCount=24;
    	bih.biCompression=BI_RGB;
    	bih.biSizeImage=bmDataSize;
    	bih.biXPelsPerMeter=0;
    	bih.biYPelsPerMeter=0;
    	bih.biClrUsed=0;
    	bih.biClrImportant=0;
    	::GetDIBits(DeskDC,DeskBmp,0,bmInfo.bmHeight,bmData,(BITMAPINFO *)&bih,DIB_RGB_COLORS);//获取位图数据部分
    	ReleaseDC(DeskWnd,DeskDC);
    	DeleteDC(memDC);
    	DeleteObject(DeskBmp);
        int sumSize = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+bmDataSize;
        char * stream = new char[sumSize];
    	memcpy(stream,&bfh,sizeof(BITMAPFILEHEADER));
    	memcpy(stream+sizeof(BITMAPFILEHEADER),&bih,sizeof(BITMAPINFOHEADER));
    	memcpy(stream+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER),bmData,bmDataSize);
    	delete bmData;
    	bmData=NULL;
    	/*HANDLE hFile=CreateFile(_T("d:\\Screen.bmp"),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,
    	FILE_ATTRIBUTE_NORMAL,0);//创建文件
    	DWORD dwSize;
    	WriteFile(hFile,(void *)stream,sumSize,&dwSize,0);//写入位图文件头
    	::CloseHandle(hFile);//关闭文件句柄*/;
    	char*p1=rgb_to_jpeg(reinterpret_cast<unsigned char*>(stream),jpg_size,bih.biWidth,bih.biHeight);
    	delete stream;
    	stream=NULL;
    	return p1;
     
    }
    

    对应编译好的jpeg.lib库文件下载地址

    转为jpg图片代码
    char * rgb_to_jpeg(unsigned char *rgb,unsigned long &jpg_size,int biWidth,int bmHeight)
    {   
        struct jpeg_compress_struct jcs;
        struct jpeg_error_mgr jem;
        JSAMPROW row_pointer[1];
        int row_stride=0;
     
        unsigned char *jpg_buf=NULL;
     
        jcs.err = jpeg_std_error(&jem);
        jpeg_create_compress(&jcs);
     
        //printf("jpeg_mem_dest\n");
        jpeg_mem_dest(&jcs,&jpg_buf,&jpg_size);
               
        jcs.image_width =biWidth;  
        jcs.image_height =bmHeight;
     
        jcs.input_components = 3;//1;  
        jcs.in_color_space = JCS_RGB;//JCS_GRAYSCALE;  
     
        jpeg_set_defaults(&jcs);  
        jpeg_set_quality(&jcs,30,TRUE);
           
        jpeg_start_compress(&jcs, TRUE);
        row_stride =jcs.image_width * 3;
           
        while(jcs.next_scanline < jcs.image_height){//对每一行进行压缩  
            row_pointer[0] = &rgb[(jcs.image_height-jcs.next_scanline-1) * row_stride];
            (void)jpeg_write_scanlines(&jcs,row_pointer, 1);
        }   
        jpeg_finish_compress(&jcs);
        jpeg_destroy_compress(&jcs);
    	/*printf("jpg_size = %lu\n",jpg_size);
    	FILE *p;
    	p= fopen("d:\\04.jpg","wb");
    	if(p==NULL)
        printf("error in fopen\n");
    	fwrite(jpg_buf,1,jpg_size,p);
    	fclose(p);*/
        return reinterpret_cast<char*>(jpg_buf);
    }
    

    可以关注以下公众号交流:
    在这里插入图片描述

    展开全文
  • 超简单的无失真缩小图片C++代码,基于GDI开发,无外部依赖库;适用于Windows程序开发
  • Jpg转换为bmp(c++

    热门讨论 2008-11-25 18:56:33
    Visual C++. You should place all resources not editable by the resource editor in this file. JpgVSbmp.def This file contains information about the DLL that must be provided to run with Microsoft ...
  • 内存流显示JPG图片

    2014-04-26 23:31:12
    vC6.0使用,自己编程的,比书上有所改进,内存占用小,可以参考一下
  • 在VS2010中用IFSTREAM来读取JPG文件,然后用OFSTREAM来写入txt文件,txt文件输出十六进制数据(例.. FF D8 .... FF D9)
  • 不解码,使用 C++ 类来快速获取 JPG 文件的宽高及旋转信息。
  • C++ jpeg图像编码与解码
  • c++ BMP转JPG

    2017-04-13 16:11:29
    VS2013,可以运行,全部都在
  • C++将二进制图片数据转换为JPG格式

    千次阅读 2018-12-03 21:58:28
    包含头文件#include "opencv2/opencv.hpp" // strPhotoData为string...cv::imencode(".jpg", mat, buff); // strJPGData为转换后的JPG格式图片数据 string strJPGData = string(buff.begin(), buff.end());  

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 70,119
精华内容 28,047
关键字:

c++ jpg

c++ 订阅