导航:首页 > 源码编译 > libjpeg编译

libjpeg编译

发布时间:2022-02-06 18:24:39

① 怎么将移植到libjpegb库

你在交叉编译时是如何配置的?
./configure --host=arm-none-linux-gnueabi --without-gtk
--without-carbon --without-quicktime --without-1394libs
--without-ffmpeg --without-python --without-swig --enable-static
--disable-shared --disable-apps CXX=arm-none-linux-gnueabi-g++
CPPFLAGS=-I/usr/arm-2008q3/arm-none-linux-gnueabi/include
--prefix=/usr/opencv
其中:--without-gtk 不使用gtk库,加上了吗?

② C++ libjpeg使用问题


我觉得问题出现在这:
while (cinfo.output_scanline < cinfo.output_height)
{

jpeg_read_scanlines(&cinfo, buffer, 1);
fwrite(buffer,row_stride,1,fp);
}

一幅24位色深bmp位图的像素值大小应该是:width * height * 3
如果你的buffer是rgbquda的结构体那也应该是width与height 的双重循环
cinfo.output_scanline < cinfo.output_height 感觉就不够,故而还有很多像素没有被填充,都是初始值0,所以是黑色的!

③ 如何用vs和makefile文件进行编译

运行cmd.exe (or command.com in win9x)->进到vc/bin目录->运行vc-vars32.bat->进到makefile 所在的目录->nmake /f makefile
从sourceforge上下载下来的libjpeg源代码中有一个makefile.vc的文件,可以通过nmake /f makefile.vc [nodebug=1]来编译libjpeg,但是只能编译静态库,如果需要编译dll以便在emacs等程序中使用的话,需要修改makefile.vc和jmorecfg.h文件。在makefile.vc文件中添加编译dll规则:
以下内容为程序代码:
libjpeg.lib: $(LIBOBJECTS) $(RM) libjpeg.lib lib -out:libjpeg.lib $(LIBOBJECTS) #
添加以下这行 libjpeg.dll: $(LIBOBJECTS) $(RM) libjpeg.dll link -dll -out:libjpeg.dll $(LIBOBJECTS) 在jmorecfg.h中添加#define _WIN32_#define JPEG_DLL 然后nmake /f makefile.vc nodebug=1就可以编译了。
将makefile复制为一个.mak文件,然后用VC打开即可!
.mak 就是一个makefile
可以指定怎样编译(命令行,必须先设置VC命令行环境)
vcvars32.bat可设置环境,在vc98/bin下 nmake /f XXXX.mak
如果有一个makefile就只要nmake就可以了。

④ 如何在make file 添加编译

运行cmd.exe (or command.com in win9x)->进到vc/bin目录->运行vc-vars32.bat->进到makefile 所在的目录->nmake /f makefile 从sourceforge上下载下来的libjpeg源代码中有一个makefile.vc的文件,可以通过nmake /f makefile.vc [nodebug=1]来编译libjpeg,但是只能编译静态库,如果需要编译dll以便在emacs等程序中使用的话,需要修改makefile.vc和jmorecfg.h文件。在makefile.vc文件中添加编译dll规则: 以下内容为程序代码: libjpeg.lib: $(LIBOBJECTS) $(RM) libjpeg.lib lib -out:libjpeg.lib $(LIBOBJECTS) # 添加以下这行 libjpeg.dll: $(LIBOBJECTS) $(RM) libjpeg.dll link -dll -out:libjpeg.dll $(LIBOBJECTS) 在jmorecfg.h中添加#define _WIN32_#define JPEG_DLL 然后nmake /f makefile.vc nodebug=1就可以编译了。 将makefile复制为一个。mak文件,然后用VC打开即可! .mak 就是一个makefile 你可以指定怎样编译(命令行,必须先设置VC命令行环境) vcvars32.bat可设置环境,在vc98/bin下 nmake /f XXXX.mak 如果有一个makefile 就只要 nmake 就可以了 makefile 文件和LINUX,UNIX环境下的时一样! MSDN中有makefile和NMAKE的详细解说!!更多更全的IT资讯,尽在博洋教育。

⑤ qt2中的libjpeg和arm-linux-gcc-4.4.3中的libjpeg

参考答案: 生活就像过山车。你可以在每次颠簸的时候尖叫,你也可以高举双手享受整个过程。

⑥ libjpeg linux程序怎么编译

step4:#make #make install 这样JPEG库就交叉编译成功了,相应的库和头文件都在/usr/arm/arm-linux/include 和/usr/arm/arm-linux/lib目录下了 安装好

⑦ 如何在windows环境下配置libjpeg

使用libjpeg源代码实现读取jpeg格式图片,生成.lib方法如下:

1、下载最新的函数库,解压缩后放到一个目录中例如: c:/temp/jpeglib-8c/

2、生成头文件jconfig.h,新建一个文件命名为jconfig.h,拷贝程序库中jconfig.vc内容到刚建立的文件中。

3、进入命令行模式RUN->CMD,然后执行 nmake -f makefile.vc 生成所需要的libjpeg.lib函数库。
(原创-出错处理)注意:这一步有两个错误出现:
A、makefile.vc<11>:fatal error U1052: file 'win32.mak' not found
提示找不到win32.mak文件,这个文件定义了一些必须的宏,这个文件在Windows SDK的安装目录中,打开makefile.vc文件修改第12行为: !include <C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\win32.mak> 保存,再执行编译命令又有新的错误。
B、 运行,发现这一步可以过得去了,但又有新的错误,此时,我选择先设定运行环境 :搜索“vcvars32.bat”拷贝到jpeglib-8c目录下,运行,然后再运行nmake -f makefile.vc ,此时发现一切问题全部解决

最后生成我们所需要的文件:libjpeg.lib。
4. vs2008注意包含库文件(附件--项目。。。)

⑧ 如何编译新版的libjpeg-turbo 出so文件给android使用

1、从官网下载最新的libjpeg-turbo源码
2、解压缩下载的文件,然后进入,并创建jni文件夹,最后将里面的文件都拷贝到jni文件中
3、进入jni目录,然后创建配置文件(例如jconfig.h,config.h),在终端输入:

[cpp]
./configure --with-jpeg8
./configure --with-jpeg8
就会生成

[cpp]
config.status: creating config.h
config.status: creating jconfig.h
config.status: creating config.h
config.status: creating jconfig.h4、接下来是创建Android.mk文件

[cpp]
# Makefile for libjpeg-turbo

##################################################
### simd ###
##################################################
LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS += -D__ARM_HAVE_NEON

# From autoconf-generated Makefile
EXTRA_DIST = simd/nasm_lt.sh simd/jcclrmmx.asm simd/jcclrss2.asm simd/jdclrmmx.asm simd/jdclrss2.asm \
simd/jdmrgmmx.asm simd/jdmrgss2.asm simd/jcclrss2-64.asm simd/jdclrss2-64.asm \
simd/jdmrgss2-64.asm simd/CMakeLists.txt

libsimd_SOURCES_DIST = simd/jsimd_arm_neon.S \
simd/jsimd_arm.c

LOCAL_SRC_FILES := $(libsimd_SOURCES_DIST)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/simd \
$(LOCAL_PATH)/android

AM_CFLAGS := -march=armv7-a -mfpu=neon
AM_CCASFLAGS := -march=armv7-a -mfpu=neon
LOCAL_ARM_MODE=arm
LOCAL_MODULE_TAGS := debug

LOCAL_MODULE := libsimd

include $(BUILD_STATIC_LIBRARY)

⑨ 如何使用libjpeg

本文只介绍jpeg压缩的相关内容,刚开始我贪图省事,采用微 软 的GDI Plus提供的功能,很是方便,先获取jpg图像的编码,然后根据图像的位图数据创建一个Bitmap类的对象,再保存图像为jpg格式就行了。但是我对 GDI+还是很信任,总感觉不踏实(没有理由的),我们的系统一旦安装就要长期运行,我就是担心长期运行一段时间后GDI+会出问题,结果也证实了我的担 心,我们实际使用的10套系统中有一套,连续运行3-5天后,GDI+就会崩溃,于是我决心采用IJG JPEG Library。您可以到
站下载libjpeg的源码, IJG JPEG Library就是jpeg压缩库,是以源码的形式提供给软件开发人员的,当然在软件包里也有编译好的库文件,我们这里就只用到其中的 libjpeg.lib,jconfig.h,jmorecfg.h,jpeglib.h这几个文件,下面我就介绍一下怎样在自己的程序里嵌入图像压缩功 能。
一、建立编译环境
所谓建立编译环境,其实非常简单,就是把上面提到的4个文件拷 贝到你的项目文件夹下,把libjpeg.lib添加到你的项目中,然后在你完成压缩功能的那个文件里加入#include "jpeglib.h",需要注意的是,libjpeg.lib是用c语言开发的,如果要用在你的C++程序里,需要用到extern "C",如下:
// TestLibjpeg.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "memory.h"
extern "C" {
#include "jpeglib.h"
}
二、压缩步骤
1、申请并初始化jpeg压缩对象,同时要指定错误处理器
struct jpeg_compress_struct jcs;
// 声明错误处理器,并赋值给jcs.err域
struct jpeg_error_mgr jem;
jcs.err = jpeg_std_error(&jem);
jpeg_create_compress(&jcs);
2、指定压缩后的图像所存放的目标文件,注意,目标文件应以二进制模式打开
f=fopen("03.jpg","wb");
if (f==NULL)
{
delete [] data;
delete [] pDataConv;
return 0;
}
jpeg_stdio_dest(&jcs, f);
3、设置压缩参数,主要参数有图像宽、高、色彩通道数(1:索引图像,3:其他),色彩空间(JCS_GRAYSCALE表示灰度图,JCS_RGB表示彩色图像),压缩质量等,如下:
jcs.image_width = nWidth; // 为图的宽和高,单位为像素
jcs.image_height = nHeight;
jcs.input_components = 1; // 在此为1,表示灰度图, 如果是彩色位图,则为3
jcs.in_color_space = JCS_GRAYSCALE; //JCS_GRAYSCALE表示灰度图,JCS_RGB表示彩色图像
jpeg_set_defaults(&jcs);
jpeg_set_quality (&jcs, 80, true);
需要注意的是,jpeg_set_defaults函数一定要等设 置好图像宽、高、色彩通道数计色彩空间四个参数后才能调用,因为这个函数要用到这四个值,调用jpeg_set_defaults函数后,jpeglib 库采用默认的设置对图像进行压缩,如果需要改变设置,如压缩质量,调用这个函数后,可以调用其它设置函数,如jpeg_set_quality函数。其实 图像压缩时有好多参数可以设置,但大部分我们都用不着设置,只需调用jpeg_set_defaults函数值为默认值即可。
4、上面的工作准备完成后,就可以压缩了,压缩过程非常简单, 首先调用jpeg_start_compress,然后可以对每一行进行压缩,也可以对若干行进行压缩,甚至可以对整个的图像进行一次压缩,压缩完成后, 记得要调用jpeg_finish_compress函数,如下:
jpeg_start_compress(&jcs, TRUE);
JSAMPROW row_pointer[1]; // 一行位图
int row_stride; // 每一行的字节数
row_stride = jcs.image_width; // 如果不是索引图,此处需要乘以3
// 对每一行进行压缩
while (jcs.next_scanline < jcs.image_height) {
row_pointer[0] = & pDataConv[jcs.next_scanline * row_stride];
jpeg_write_scanlines(&jcs, row_pointer, 1);
}
jpeg_finish_compress(&jcs);
5、最后就是释放压缩工作过程中所申请的资源了,主要就是jpeg压缩对象,由于在本例中我是直接用的局部变量,所以只需调用jpeg_destroy_compress这个函数即可,如下:
jpeg_destroy_compress(&jcs);
三、解压缩步骤
解压缩步骤与压缩步骤非常相似,只是解压缩对象为jpeg_decompress_struct类型,步骤如下:
1、声明并初始化解压缩对象,同时制定错误信息管理器
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
2、打开jpg图像文件,并指定为解压缩对象的源文件
FILE *f = fopen(strSourceFileName,"rb");
if (f==NULL)
{
printf("Open file error!\n");
return;
}
//
jpeg_stdio_src(&cinfo, f);
3、读取图像信息
jpeg_read_header(&cinfo, TRUE);
4、根据图像信息申请一个图像缓冲区
data = new BYTE cinfo.image_width*cinfo.image_height*cinfo.num_components];
5、开始解压缩
jpeg_start_decompress(&cinfo);
JSAMPROW row_pointer[1];
while (cinfo.output_scanline < cinfo.output_height)
{
row_pointer[0] = &data[(cinfo.output_height - cinfo.output_scanline-1)*cinfo.image_width*cinfo.num_components];
jpeg_read_scanlines(&cinfo,row_pointer ,
1);
}
jpeg_finish_decompress(&cinfo);
6、释放资源
jpeg_destroy_decompress(&cinfo);
fclose(f);
好了,利用IJG JPEG Library进行图像压缩就介绍到这里,希望对大家有所帮助,实例代码已经实现了图像的压缩和解压缩的全部功能,命令格式 为:“TestLibjpeg.exe j|j24|b 源文件名 目标文件名”,其中,j选项将源文件压缩为jpg格式,不改变色彩模式,j24选项将源文件压缩为24为jpg格式,b选项将源文件解压缩为bmp格式, 该实例并没有提供文件有效性的验证,如果要引入自己的代码,请自己实现文件有效性的验证。

阅读全文

与libjpeg编译相关的资料

热点内容
看拉丁电视都用什么app好 浏览:776
什么是哲学pdf 浏览:505
hdfs的三个下载命令 浏览:520
java常用的排序算法 浏览:355
51单片机连接adc 浏览:857
python命名变量报错 浏览:117
安卓手机如何换windows系统 浏览:610
python中的类是什么 浏览:628
我的英雄学院用哪个app可以看 浏览:33
excel插入选项卡对象命令 浏览:691
python字符全排列 浏览:499
824页大瓜文件pdf 浏览:221
朔州ios源码 浏览:249
算法逻辑电路 浏览:941
青少年喝酒解压辩论赛 浏览:175
android如何新建activity 浏览:741
ntp支持的认证算法 浏览:716
想做快手主播需要什么app 浏览:926
阿里云服务器如何转账户 浏览:905
编译器和解释器实现技术完全不同 浏览:434