资源简介
1、jpeg-test-arm目录下是测试修改后的动态库程序
2、libjpeg目录下是修改后的libjpeg源码
3、libjpeg.so.62.0.0是交叉编译修改libjpeg源码生成的动态库,arm平台下的。
4、具体修改步骤参考如下地址
http://www.cnblogs.com/pang1567/p/3683601.html
代码片段和文件信息
#include
#include
#include “jpeglib.h“
#include “li_bitmap.h“
#include
#include
//void bmp2jpeg(const char *strSourceFileName const char strDestFileName) ;
void
bmp2jpeg(const char *strSourceFileName const char *strDestFileName)
{
BITMAPFILEHEADER bfh ; //位图文件头
BITMAPINFOHEADER bih ; //位图头信息
RGBQUAD rq[256] ; //调色板
int nAdjust; // 用于字节对齐
//char outdata[2000000] ; //用户缓存,存放将要压缩的jpeg文件
char * outdata = (char *)malloc(2000000) ;
int nSize; // 用于存放压缩完后图像数据的大小
BYTE *data= NULL;//new BYTE[bih.biWidth*bih.biHeight];// 这个data用于存放未压缩前的图像数据
int nComponent = 0;
FILE *f = fopen(strSourceFileName“rb“); //打开要压缩的源bmp文件
if (f==NULL)
{
perror(“Open bmpsrc file error!“);
return;
}
// 读取文件头
fread(&bfhsizeof(bfh)1f);
// 读取图像信息
fread(&bihsizeof(bih)1f);
switch (bih.biBitCount)
{
case 8:
if (bfh.bfOffBits-1024<54) //表示文件头(14)和信息头(40)的字节数不够,显然不是位图文件
{
fclose(f);
return;
}
// 8位字节对齐
nAdjust = bih.biWidth%4;
if (nAdjust) nAdjust = 4-nAdjust;
//data= new BYTE[(bih.biWidth+nAdjust)*bih.biHeight];
data = (BYTE *) malloc((bih.biWidth+nAdjust)*bih.biHeight) ;
// 定位调色板,并读取调色板,调色板字节数1024个字节
fseek(fbfh.bfOffBits-1024SEEK_SET);
fread(rqsizeof(RGBQUAD)256f);
// 读取位图
fread(data(bih.biWidth+nAdjust)*bih.biHeight1f);
fclose(f);
nComponent = 1;
break;
case 24:
{
// 8位字节对齐
nAdjust = bih.biWidth*3%4;
if (nAdjust) nAdjust = 4-nAdjust;
//data= new BYTE[(bih.biWidth*3+nAdjust)*bih.biHeight];
data = (BYTE *) malloc((bih.biWidth*3+nAdjust)*bih.biHeight) ;
fseek(fbfh.bfOffBitsSEEK_SET);
fread(data(bih.biWidth*3+nAdjust)*bih.biHeight1f);
fclose(f);
int i = 0 j = 0 ;
for (j=0;j for (i = 0;i {
BYTE red = data[j*(bih.biWidth*3+nAdjust)+i*3];
data[j*(bih.biWidth*3+nAdjust)+i*3] = data[j*(bih.biWidth*3+nAdjust)+i*3+2];
data[j*(bih.biWidth*3+nAdjust)+i*3+2] = red;
}
}
nComponent = 3;
break;
}
default:
fclose(f);
return;
}
printf(“bmp file is %d byte \n“ bfh.bfSize) ;
struct jpeg_compress_struct jcs; //位图压缩结构体
struct jpeg_error_mgr jem; //出错处理结构体
jcs.err = jpeg_std_error(&jem);
/*开始计时*/
clock_t start finish;
double duration;
start = clock() ; //start count the time
jpeg_create_compress(&jcs);
jpeg_stdio_dest(&jcs outdata&nSize);
//jpeg_stdio_dest(&jcsf1);
jcs.image_width = bih.biWidth; // 位图的宽和高,单位为像素
jcs.image_height = bih.biHeight;
jcs.input_components = nComponent; // 1表示灰度图, 如果是彩色位图,则为3
if (nComponent==1)
jcs.in_color_space = JCS_GRAYSCALE; //JCS_GRAYSCALE表示灰度图,JCS_RGB表示彩色图像
else
jcs.in_color_space = JCS_RGB;
jpeg_set_defaults(&jcs);
jpeg_set_quality (&jcs 99 true);
jpeg_start_compress(&jcs TRUE);
JSAMPROW row_pointer[1]; // 一行位图
int row_stride; // 每一行的字节数
row_stride = jcs.image_width*nComponent; // 如果不是索引图此处需要乘以3
// 对每一行进行压缩
while (jcs.next_scanline < jcs.image_he
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 24296 2014-09-21 01:23 libjpeg-mem\jpeg-test-arm\.objs\main.o
文件 1253 2014-09-21 01:23 libjpeg-mem\jpeg-test-arm\jconfig.h
文件 12458 2014-09-21 01:23 libjpeg-mem\jpeg-test-arm\jmorecfg.h
文件 46358 2014-09-21 01:23 libjpeg-mem\jpeg-test-arm\jpeglib.h
文件 156761 2014-09-21 01:23 libjpeg-mem\jpeg-test-arm\libjpeg.so.62.0.0
文件 894 2014-09-21 01:23 libjpeg-mem\jpeg-test-arm\li_bitmap.h
文件 19612 2014-09-21 01:23 libjpeg-mem\jpeg-test-arm\main
文件 9134 2014-09-21 01:23 libjpeg-mem\jpeg-test-arm\main.c
文件 1392 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\cdjpeg.o
文件 33510 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\cjpeg
文件 12252 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\cjpeg.o
文件 28991 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\djpeg
文件 13264 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\djpeg.o
文件 2876 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jcapimin.o
文件 1924 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jcapistd.o
文件 4120 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jccoefct.o
文件 3456 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jccolor.o
文件 3888 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jcdctmgr.o
文件 8048 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jchuff.o
文件 1576 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jcinit.o
文件 1708 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jcmainct.o
文件 4248 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jcmarker.o
文件 5596 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jcmaster.o
文件 1216 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jcomapi.o
文件 6268 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jcparam.o
文件 9452 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jcphuff.o
文件 3164 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jcprepct.o
文件 4604 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jcsample.o
文件 3768 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jctrans.o
文件 3228 2014-09-21 02:08 libjpeg-mem\libjpeg\jpeg-6b\.libs\jdapimin.o
............此处省略789个文件信息
相关资源
- 20150909162644-阿里云linux一键安装web环境
- 在linux下实现的一个简单的广告机
- Helix server 11 for Linux无限用户服务器版
- Linux下32位mongodb安装包
- 华中科技大学-操作系统原理实验源代
- texlive2018离线安装包ISO镜像适合Linux和
- libxls生成的库文件
- rpc.rstatd-4.0.1.tar,rsh-0.17-14.i386.rpm,
- MBRFix工具(在Windows下删除Ubuntu Linux系
- zlib-1.2.3.tar.tar
- linuxC函数手册.chm
- vim加载systemverilog语法高亮文件:sytem
- POSIX标准 - IEEE Std 1003.1-2017
- 海思 qt 移植 linuxfb 修改
- LinuxC函数-中文使用手册chm
评论
共有 条评论