前面有文章,将RGB格式转换为JPG文件。近来工作需要,需要RGB转换为JPG格式到内存。这事……


int rgb2jpgAction(struct jpeg_compress_struct* pCinfo, const char *pRgbData, const int width, const int height)
{int depth = RGB_COUNT;JSAMPROW row_pointer[1];pCinfo->image_width      = width;pCinfo->image_height     = height;pCinfo->input_components = depth;pCinfo->in_color_space   = JCS_RGB;jpeg_set_defaults(  pCinfo); jpeg_set_quality(   pCinfo, JPEG_QUALITY, TRUE );jpeg_start_compress(pCinfo, TRUE);int row_stride = width * depth;while (pCinfo->next_scanline < pCinfo->image_height){row_pointer[0] = (JSAMPROW)(pRgbData + pCinfo->next_scanline * row_stride);jpeg_write_scanlines(pCinfo, row_pointer, 1);}jpeg_finish_compress( pCinfo);jpeg_destroy_compress(pCinfo);return 0;
}/**这里特别说明jpeg_mem_dest的第二个参数,buffer。如果在rgb2jpg声明指针或者缓冲区,然后试图复制到pDest,直接崩溃;或者取不到数据。研究了半天不行。必须是如下的写法。如果缓冲区不够怎么办?那就开大一点。char pDest[512*1024];int  size=512*1024;然后再传递过来。*/
int rgb2jpg(const char *pRgbData, const int width, const int height, int type, char* pDest, int* pSize)
{struct jpeg_compress_struct cinfo;struct jpeg_error_mgr jerr;FILE* pOutFile = NULL;cinfo.err = jpeg_std_error(&jerr);jpeg_create_compress(&cinfo);if (type){if ((pOutFile = fopen(pDest, "wb")) == NULL){return -1;}jpeg_stdio_dest(&cinfo, pOutFile);}else{jpeg_mem_dest(&cinfo, (unsigned char **)&pDest, (long unsigned int *)pSize);}rgb2jpgAction(&cinfo, pRgbData, width, height);if (type){fclose(pOutFile);}return 0;
}

将RGB转换为JPG格式到内存的代码相关推荐

  1. 教你用8行代码将word转换为pdf格式 及 6行代码实现批量将word转换为pdf格式--python实用小技能get起来

    目录 将word转换为pdf格式 安装pywin32 上代码 运行结果 批量实现word转pdf 安装docx2pdf 上代码 运行结果 将word转换为pdf格式 安装pywin32 代码(Anac ...

  2. matlab csc,matlab - 从Matlab CSC转换为CSR格式 - 堆栈内存溢出

    我最终使用CUSP库将Matlab中的CSC格式从Matlab转换为CSR,如下所示. 从matlab获取矩阵A之后,我得到了row , col和values矢量,然后将它们复制到分别为它们创建的th ...

  3. 视频图像数据处理八:将rgb视频图像转换为yuv420格式视频图像

    文章目录 转换公式 需要注意 函数代码 测试用例 下载 本文介绍了将rgb视频图像转换为yuv420格式视频图像的方法,附有详细的代码和图像示例.文中rgb24和yuv420文件需要使用yuv/rgb ...

  4. 在Python中使用OpenCV将RGB格式的图像转换为HSV格式的图像

    An HSV is another type of color space in which H stands for Hue, S stands for Saturation and V stand ...

  5. 初学音视频(一)-RGB和YUV格式分析

    前言 有幸能够看到雷霄骅先生的博客,很感谢雷神能够这么无私把知识分享出来,对我这种新手的帮助实在是太大了.希望到另一个世界雷神不用再这么辛苦的. 本篇文章基本全是参考雷神的:视音频数据处理入门:RGB ...

  6. 图片格式及其内存占用

    游戏中最占内存的是图片,所以本篇主要讲图片的优化方式. 1.内存计算公式 默认情况下,在cocos2d里面加载一张图片的时候,图片中每一个像素点使用4个byte(8位)来表示--分别代表red.gre ...

  7. FFmpeg开发实战(五):bmp转换为jpeg格式图像

    文章目录 1. bmp结构 2. bgr24转yuv420p 3. yuv420转jpeg 4. 下载 本文介绍了将bmp格式图像转换为jpeg格式图像的方法,附有详细的代码和图像示例. 1. bmp ...

  8. 走进音视频的世界——RGB与YUV格式

    在图像的世界里,一般使用RGB作为存储格式.而在视频的世界里,一般使用YUV作为压缩存储格式.有时候面试官会问:为什么视频使用YUV来压缩存储,而不用RGB?YUV与RGB有什么区别,两者如何转换的? ...

  9. 【C语言】之把yuyv422格式的图片转换为pnm格式的图片

    平台:Linux /***************************************************************************** 文件名:Yuyv422T ...

  10. 转:YUV RGB 常见视频格式解析

    转: http://www.cnblogs.com/qinjunni/archive/2012/02/23/2364446.html YUV RGB 常见视频格式解析 I420是YUV格式的一种,而Y ...

最新文章

  1. java-IO操作简介
  2. php如何进行错误处理,php如何自定义错误处理
  3. 腾讯视频怎么打开个人直播后台播放功能
  4. 二级数据库access和mysql_二级数据库access和mysql
  5. Ubuntu16.04 Oracle JDK8和Open JDK8的安装与配置
  6. JS中字串转参数用的false/true
  7. cad常青藤插件_做CAD设计,别说你不知道,这些插件有多好用
  8. java边缘检测_Sobel边缘检测实现
  9. range-coder使用
  10. oracle语句报错 * ERROR at line 2: ORA-00923: FROM keyword not found where expected
  11. 修真院java_【修真院JAVA小課堂】JMeter的簡單介紹
  12. 初学太极拳须知--吴公仪
  13. 怎么屏蔽还有照片_【文末福利】在朋友圈发男神照片忘了屏蔽父母,麻麻的回应亮了…...
  14. 3步轻松申请邮箱账号,申请163vip邮箱
  15. 了解阿博茨RPA生态系统
  16. Metal(二) Metal语法规范
  17. 甲骨文发布移动版Java发展路线图
  18. 一头扎紧mysql_[www.java1234.com]一头扎进Mysql视频教程
  19. 2018年NOIP普及组完善程序题2—右侧第一个更大值
  20. tensorboard画loss及acc曲线

热门文章

  1. K-Lite Codec Pack 解码器下载及安装过程步骤参考
  2. linux nginx源码安装
  3. 你应该知道的Redis过期键和过期策略
  4. 微软超融合私有云测试02-测试架构描述
  5. 听飞狐聊JavaScript设计模式系列12
  6. ie java 注册表,win7在桌面显示IE图标的注册表
  7. HTML实现学习网站首页
  8. java 循环读取指定文件夹下所有文件
  9. 创意c语言程序设计,大学生·创意·创新创业教育与实践系列教材:C语言程序设计教程简介,目录书摘...
  10. 网站五万ip需要服务器,30万IP网站要用什么样的服务器?