从一个大的RGBA数据中,剪切部分为RGB格式:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#include "gh_rgba2jpg.h"#include <jpeglib.h>int clipRgbaToJpgFile(const char *pFileName, const char* pRgbaData, const int nWidth, const int nHeight, const int nClipLeft, const int nClipTop, const int nClipWidth, const int nClipHeight)
{char* pClipSource     = NULL;char* pClipData       = NULL;int pixcelBytes       = nClipWidth*nClipHeight*3;int i = 0;int j = 0;pClipSource = malloc(pixcelBytes);if (!pClipSource){return -1;}//移动到制定位置pRgbaData += nClipTop * nWidth * 4;pRgbaData += nClipLeft * 4;pClipData = pClipSource;for (i=0; i<nClipHeight; i++){for (j=0; j<nClipWidth; j++){//这样性能如何?memcpy(pClipData, pRgbaData, 3);pRgbaData += 4;pClipData += 3;}pRgbaData += (nWidth-nClipWidth)    * 4;}rgb2jpg(pFileName, pClipSource, nClipWidth, nClipHeight);//释放资源free(pClipSource);return 0;
}

将剪切后的RGB保存为JPG文件:


int rgb2jpg(char *jpg_file, char *pdata, int width, int height)
{int depth = 3;JSAMPROW row_pointer[1];struct jpeg_compress_struct cinfo;struct jpeg_error_mgr jerr;FILE *outfile;if ((outfile = fopen(jpg_file, "wb")) == NULL){return -1;}cinfo.err = jpeg_std_error(&jerr);jpeg_create_compress(&cinfo); jpeg_stdio_dest(&cinfo, outfile);cinfo.image_width      = width;cinfo.image_height     = height;cinfo.input_components = depth;cinfo.in_color_space   = JCS_RGB;jpeg_set_defaults(&cinfo);jpeg_set_quality(&cinfo, JPEG_QUALITY, TRUE );jpeg_start_compress(&cinfo, TRUE);int row_stride = width * depth;while (cinfo.next_scanline < cinfo.image_height){row_pointer[0] = (JSAMPROW)(pdata + cinfo.next_scanline * row_stride);jpeg_write_scanlines(&cinfo, row_pointer, 1);}jpeg_finish_compress(&cinfo);jpeg_destroy_compress(&cinfo);fclose(outfile);return 0;
}

RGB数据剪切后保存为JPG格式文件的代码(使用jpeglib)相关推荐

  1. 用Python编写录屏程序将播放的视频用截屏方法转换为多帧图像编辑后保存为GIF格式动图文件

    有时编写游戏后发博文,为使读者有一个直观的游戏效果,会把游戏运行动画转换GIF格式动图发到博文中.本文介绍如何用python PIL库ImageGrab.grab()函数截屏,编写录屏程序,将视频转换 ...

  2. CAD图纸编辑完成后保存成PDF格式怎么操作?

    平时在我们对CAD图纸的绘制过程中,经常需要对CAD图纸的格式进行转换,因为CAD格式的图纸在一般常见的看图软件中是无法打开的,需要在特定的环境中才可以打开,这就需要我们在图纸绘制完成后保存为易于查看 ...

  3. FFmpeg4入门07:解码视频并保存为YUV格式文件

    上一篇我们解码并保存了其中的几帧确保解码过程和结果是对的.本篇我们将解码整个视频并保存为标准的YUV格式(YUV格式具体信息详见YUV格式介绍),我们就选YUV420P(I420)作为输出格式. 保存 ...

  4. 把python tkinter canvas中的图形图像保存为通用格式文件的5种方法

    在计算机上画图未完成,需要保存未完成图形以便以后继续,或者完成画图,要保存为通用格式文件,方便浏览.如使用python tkinter Canvas画图,其好像没有将图像保存通用格式文件的方法,但可以 ...

  5. 记事本TXT中文默认保存的ANSI格式文件乱码,一些软件菜单乱码,右键菜单某些乱码...

    记事本TXT中文默认保存的ANSI格式文件乱码,一些软件菜单乱码,右键菜单某些乱码 发现的乱码现象主要体现在WinRAR软件的右键菜单.记事本编辑打开的所有ANSI格式编码的文件.FlashFXP上传 ...

  6. 使用matlab处理INCF采集数据,mdf(.dat)格式文件,并将将其写入excel文件

    使用matlab处理INCF采集数据,mdf(.dat)格式文件,并将将其写入excel文件 最近在做某汽车公司关于汽车标定的数据.数据通过INCA采集,保存为.dat格式.数据可以通过measure ...

  7. 使用python 将稀疏矩阵保存为mtx格式文件

    使用scipy包 import scipy.sparse as sparse import scipy.io as sio import scipy.stats as stats import num ...

  8. matlab中将数据保存为txt文件_matlab中将数据输出保存为txt格式文件的方式

    将matlab中数据输出保存为txt 格式总结网上各大论坛,主要有三种 方法. 第一种方法 :save(最简单基本 具体的命令是:用save*.txt -ascii 为函数*.txt 为文件名,该文件 ...

  9. python实现美国国家气候数据中心NCDC预处理,按年重采样为年度数据,并保存为Excel格式

    最近学习了处理气象数据NCDC 的过程,在这里记录并分享一下,由于刚开始学相关知识,文中有疏漏和不足,还请多见谅. 4.3更 摸了好久,决定还是更新一下,主要是稍微改了一点点代码,把其他列的数据也处理 ...

  10. python往npy写入数据_操作python实现npy格式文件转换为txt文件

    如下代码会将npy的格式数据读出,并且输出来到控制台:import numpy as np ##设置全部数据,不输出省略号 import sys np.set_printoptions(thresho ...

最新文章

  1. 【转】jQuery获取Select option 选择的Text和Value
  2. 使用mvc模式读取服务器上的文件,关于C#:如何使用asp.net MVC应用程序从服务器上的网络路径读取...
  3. MariaDB Galera Cluster with HA Proxy and Keepalived on Cents 6
  4. session_id()和session_regenerate_id()对原来session文件和其中数据是怎么处理的
  5. 今天微软关闭Silverlight官网,Sivlerlight真得要死了吗?
  6. Linux 源代码阅读知识点及要求
  7. 【Clickhouse】ClickHouse 内部架构介绍
  8. iText in Action 2nd5.2节(Events for basic building blocks)读书笔记
  9. sqlplus 设置显示格式
  10. php监测tomcat,java_JAVA实现监测tomcat是否宕机及控制重启的方法,本文实例讲述了JAVA实现监测tom - phpStudy...
  11. C++ Templates 学习历程一
  12. 计算机应用能力考试初级,河北省职称计算机应用能力考试初级
  13. PostgreSQL创建数据库用户
  14. java比较三个数的编程_java编程题,输入3个数abc按大小顺序输出
  15. 微信小程序自定义switch中带文字效果
  16. 实验四+070+胡阳洋
  17. mysql命令去重_mysql去重
  18. JSF seam 中使用UEditor
  19. 优雅的二维数组循环赋值
  20. MATP ManyTask Multitask Problem和Solution的变量范围

热门文章

  1. django singal 信号量
  2. 阿里云移动端播放器高级功能---直播时移 1
  3. vue-cli 2.x 项目优化之:引入本地静态库文件
  4. 【python】编程语言入门经典100例--30
  5. linux kernel source code analysis
  6. 8.4文件系统的管理与挂载2
  7. Codejock Xtreme MFC 图形界面控件包
  8. IT项目管理之无休止会议
  9. css3弹性盒子+小程序布局
  10. Android的Theme主题切换