導航:首頁 > 操作系統 > linuxjpeglib

linuxjpeglib

發布時間:2024-05-15 14:59:42

㈠ 如何用過C++編程實現格式的轉換

  1. 格式轉換有很多種。必須說清楚是什麼格式之間的轉換才可以實現編程。

  2. 例如bmp轉化為jpeg格式。

    常式:

    /****************************************************************************
    名稱:jpeg.c
    功能:linux下bmp轉化為jpeg程序源代碼
    日期:2010.01.26
    注意:編譯時加「-ljpeg」(gcc-obmp2jpgjpeg.c-ljpeg)

    *****************************************************************************/
    #include<string.h>
    #include<sys/types.h>
    #include<sys/stat.h>
    #include<sys/ioctl.h>
    #include<sys/mman.h>
    #include<linux/videodev.h>
    #include<fcntl.h>
    #include<unistd.h>
    #include<stdio.h>
    #include<errno.h>
    #include<stdlib.h>
    #include<signal.h>
    #include<sys/timeb.h>
    #include<jpeglib.h>

    #defineJPEG_QUALITY95//圖片質量

    intBmp2Jpg(constchar*bmp_file,constchar*jeg_file,constintwidth,constintheight)
    {
    FILE*fd;
    intret;
    unsignedchar*data;
    longsizeImage;
    intdepth=3;
    JSAMPROW*row_pointer;
    longrgb_index=0;
    inti=0;
    structjpeg_compress_structcinfo;
    structjpeg_error_mgrjerr;
    FILE*outfile;
    ;
    //Readbmpimagedata
    sizeImage=width*height*3;
    data=(unsignedchar*)malloc(sizeImage);
    fd=fopen(bmp_file,"rb");
    if(!fd)
    {
    printf("ERROR1:Cannotopentheimage. ");
    free(data);
    return-1;
    }

    fseek(fd,54,SEEK_SET);
    ret=fread(data,sizeof(unsignedchar)*sizeImage,1,fd);
    if(ret==0)
    {
    if(ferror(fd))
    {
    printf(" ERROR2:Cannotreadthepixeldata. ");
    free(data);
    fclose(fd);
    return-1;
    }
    }

    //ConvertBMPtoJPG
    cinfo.err=jpeg_std_error(&jerr);
    //*.
    jpeg_create_compress(&cinfo);

    if((outfile=fopen(jeg_file,"wb"))==NULL)
    {
    fprintf(stderr,"can'topen%s ",jeg_file);
    return-1;
    }
    jpeg_stdio_dest(&cinfo,outfile);

    cinfo.image_width=width;//*imagewidthandheight,inpixels
    cinfo.image_height=height;
    cinfo.input_components=depth;//*#ofcolorcomponentsperpixel
    cinfo.in_color_space=JCS_RGB;//*colorspaceofinputimage
    jpeg_set_defaults(&cinfo);

    //Nowyoucansetanynon-defaultparametersyouwishto.
    //(quantizationtable)scaling:

    jpeg_set_quality(&cinfo,JPEG_QUALITY,TRUE);//*limittobaseline-JPEGvalues
    jpeg_start_compress(&cinfo,TRUE);

    //一次寫入
    intj=0;
    row_pointer=malloc(height*width*3);
    char*line[300];

    for(i=0;i<height;i++)
    {
    unsignedchar*lineData=NULL;
    lineData=malloc(width*3);
    line[i]=lineData;
    for(j=0;j<width;j++)
    {
    lineData[j*3+2]=data[rgb_index];
    rgb_index++;
    lineData[j*3+1]=data[rgb_index];
    rgb_index++;
    lineData[j*3+0]=data[rgb_index];
    rgb_index++;
    }
    row_pointer[height-i-1]=lineData;
    }
    jpeg_write_scanlines(&cinfo,row_pointer,height);
    jpeg_finish_compress(&cinfo);
    jpeg_destroy_compress(&cinfo);
    for(i=0;i<height;i++)
    {
    free(line[i]);
    }
    free(row_pointer);
    free(data);
    fclose(fd);
    fclose(outfile);

    return0;
    }

㈡ 如何在windows上編譯Tesseract OCR

最近要用java實現一個驗證碼識別系統,選了半天之後最終決定用Tesseract-OCR作為識別引擎。既然是java+Tesseract-OCR,自然就首選Tess4J。由於Tess4J直接且僅提供了編譯成dll的3.02版本的Tesseract-OCR,而我的最終目標Linux下使用且想自己更換Tesseract-OCR的版本,就決定自己動手對Tesseract-OCR的代碼進行編譯。而這篇文章就是這次研究的中間產物。
雖然Tess4J目前支持的是Tesseract-OCR 3.02,但Tesseract-OCR無法在Tess4J中直接進行使用,還需要使用capi進行封裝,但這個就是後話了,本文僅介紹如何在windows環境下編譯Tesseract-OCR。

准備工作
根據GoogleCode上下載Tesseract-OCR的windows安裝版本測試的結果及官方說明文檔,Tesseract-OCR支持tiff、png、gif、bmp、jpeg等格式,所以首先就按照這個目標來收集所需的支持庫。由於最終目標是在Linux下編譯成功,所以我選擇了msys+tdm-gcc來模擬Linux下的編譯過程。

需要下載的庫有:
1) zlib-1.2.7
2) libpng-1.5.10
3) giflib-4.1.6
4) libungif-4.1.4(這個似乎在最終的編譯過程中沒有起作用)
5) jpeg-8d
6) jbigkit-2.0
7) tiff-3.9.5
8) libwebp-0.1.3 9) leptonica-1.68

編譯環境推薦使用最新的msys和tdm-gcc:
1) msys可以通過下載mingw-get-insta-20120426進行安裝。
2) tdm-gcc推薦使用4.5.2版本。
Tesseract-OCR 3.02可以通過svn獲取,地址是:http://tesseract-ocr.googlecode.com/svn/trunk
var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);

編譯
本節所列出的為完整的編譯過程及步驟順序,請按照順序進行。以下所述步驟均在msys+tdm-gcc4.5.2測試通過。執行命令前,請先解壓縮,並進入解壓縮後的目錄。
zlib-1.2.7
解壓後進入代碼目錄,執行以下命令: ./configure
make -f win32/makefile.gcc
make -f win32/makefile.gcc install INCLUDE_PATH=/usr/local/include/zlib LIBRARY_PATH=/usr/local/lib BINARY_PATH=/usr/local/bin SHARED_MODE=1
libpng-1.5.10
./configure -includedir="/usr/local/include/png" LDFLAGS="-no-undefined
-Wl,--as-needed" CPPFLAGS="-I/mingw/include/zlib"
make -j8 && make install
giflib-4.1.6
./autogen.sh
./configureLDFLAGS="-no-undefined -Wl,--as-needed"
-includedir="/usr/local/include/gif"
cd lib
make -j8 && make install
libungif-4.1.4
./autogen.sh ./configure LDFLAGS="-no-undefined -Wl,--as-needed"
-includedir="/usr/local/include/ungif"
cd lib
make -j8 && make install
jpeg-8d
./configure
LDFLAGS="-no-undefined
-Wl,--as-needed"
var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);
-includedir="/usr/local/include/jpeg"
make -j8 && make install
jbigkit-2.0
jbigkit由tiff組件所使用,雖不是必選項,但為了保證過程的完整這里也順帶一提。
由於jbig的Makefile中僅提供生成靜態庫的動作,因此必須自己手動在Makefile中加入生成動態庫的部分,否則在鏈接tiff庫時也僅能生成靜態庫。從而影響到leptonica的鏈接。
tiff-3.9.5
./autogen.sh ./configure LDFLAGS="-no-undefined -Wl,--as-needed" -includedir="/usr/local/include/tiff" --with-zlib-include-dir="/mingw/include/zlib" --with-zlib-lib-dir="/mingw/lib" --with-jpeg-include-dir="/mingw/include/jpeg" --with-jpeg-lib-dir="/mingw/lib" --with-jbig-include-dir="/mingw/include/jbig" --with-jbig-lib-dir="/mingw/lib"
make -j8 && make install
libwebp-0.1.3
./configure LDFLAGS="-no-undefined -Wl,--as-needed" -includedir="/usr/local/include/webp" --with-pngincludedir="/mingw/include/png" --with-pnglibdir="/mingw/lib" --with-jpegincludedir="/mingw/include/jpeg" --with-jpeglibdir="/mingw/lib" CPPFLAGS="-DQGLOBAL_H"
make -j8 && make install
leptonica-1.68
autobuild ./configure -includedir="/usr/local/include" LDFLAGS="-no-undefined" CPPFLAGS="-I/mingw/include/zlib -I/mingw/include/png -I/mingw/include/gif -I/mingw/include/ungif -I/mingw/include/jpeg -I/mingw/include/tiff -I/mingw/include/webp"
make -j8 && make install 說明:
使用了zlib庫後,可能導致編譯出錯。這時請修改pngio.c: 在#include "png.h"後添加 #ifdef HAVE_LIBZ #include "zlib.h"

㈢ linux安裝swftools 執行make時報錯

在swftools官網下載最新版本,官網FAQ標簽中給出freetype庫和jpeglib庫的連接,freetype選擇版本freetype-2.1.10.tar.gz,jpeglib選擇版本jpegsrc.v8c.tar.gz。
先安裝gcc、gcc-c++、zlib、zlib-devel

解壓命令: tar -zxvf xxx.tar,解壓下載下來的freetype、jpeglib安裝包
進入安裝包目錄
然後執行:
./configure
make
make install

解壓swftools,進入安裝包目錄,執行以下命令:
ldconfig /usr/local/lib
./configure
make
make install
make clean
make distclean
whereis pdf2swf

運行./configure命令時出現:
checking build system
type... Invalid configuration 'i686-pc-linux-': machine 'i686-pc-linux' not
recognized
configure: error:
/bin/sh ./config.sub i686-pc-linux- failed
就換為執行: ./configure --build=i686-pc-linux-gnu

運行出現:make: Nothing to be done for `unix'.
執行: make clean
然在再執行make即可

如出現創建文件時間問題,調整linux系統時間即可。

㈣ 安裝php顯示configure:error:jpeglib.h not found.怎麼解決

在Linux下安裝PHP過程中,編譯時出現configure: error: libjpeg.(a|so) not found 錯誤的解決辦法:

檢查之後發現已經安裝了libjpeg

[root@localhost php-5.2.14]# yum list installed|grep libpng

libpng.x86_64 2:1.2.49-1.el6_2

或者:

[root@localhost php-5.2.14]# rpm -qa|grep libjpeg

libjpeg-turbo-1.2.1-3.el6_5.x86_64

閱讀全文

與linuxjpeglib相關的資料

熱點內容
參考文獻有什麼app 瀏覽:520
二十八宿的演算法 瀏覽:517
論客的伺服器怎麼設置 瀏覽:571
java中主方法 瀏覽:527
armlinux交叉編譯器 瀏覽:734
ios編程難嗎 瀏覽:660
為什麼叫A演算法 瀏覽:209
安卓手機10塊錢可以買什麼手機 瀏覽:275
怎樣對某一列部分數據加密 瀏覽:364
typecho伺服器怎麼登錄 瀏覽:301
龍雀服源碼 瀏覽:337
網球小恐龍解壓玩具 瀏覽:443
開關電源還是單片機有 瀏覽:201
金得利文件夾是哪產的 瀏覽:924
電腦棕色文件夾打不開 瀏覽:657
微信如何使用網路代理伺服器 瀏覽:328
無線網橋加密技術 瀏覽:286
pdf格式轉化ppt 瀏覽:934
程序設計流程圖表達演算法 瀏覽:539
plc程序員待遇怎麼樣 瀏覽:596