導航:首頁 > 源碼編譯 > 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編譯相關的資料

熱點內容
如何對伺服器取證 瀏覽:440
有什麼系統像友價源碼 瀏覽:570
圓柱彈簧壓縮量 瀏覽:811
我的世界國際版為什麼沒法進去伺服器 瀏覽:103
我的世界如何創造一個伺服器地址 瀏覽:837
皮皮蝦app怎麼玩視頻教程 瀏覽:253
python整型轉化字元串 瀏覽:804
android數據共享方式 瀏覽:375
編譯環境控制台 瀏覽:620
寧波欣達壓縮機空氣過濾器價位 瀏覽:665
冪函數的運演算法則總結 瀏覽:138
方舟自己的伺服器怎麼搞藍圖 瀏覽:915
校園網怎麼加密ip 瀏覽:786
kotlin可以編譯雙端嗎 瀏覽:327
哪個幼兒識字app不要錢 瀏覽:802
壓縮軟體的作用 瀏覽:31
猴子網游app安全嗎怎麼掃碼 瀏覽:221
哪些系統盤文件夾大 瀏覽:341
pdf朗讀軟體手機 瀏覽:226
ug編程實例教程 瀏覽:988