1. 如何使用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格式, 該實例並沒有提供文件有效性的驗證,如果要引入自己的代碼,請自己實現文件有效性的驗證。
2. 如何在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注意包含庫文件(附件--項目。。。)
3. 安裝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
4. kali里邊怎麼安裝libjpeg-turbo8這個庫急急急
下載libjpeg-turbo源碼。
安裝編譯依賴包。
$ sudo apt-get install nasm
編譯安裝。
第一步,移動到源文件目錄,並執行autoreconf -fiv 命令。
第二步,運行configure腳本並加上配置參數。我們就直接在源目錄執行,不用創建build目錄了。
不過在運行之前,我們查看一下/usr/local/lib下有沒有libjpeg.so*文件,有的話我們執行操作,刪除這些文件。sudo rm -rf /usr/local/lib/libjpeg.so*否則,直接執行此步即可。
$ ./configure --prefix=/usr/local --mandir=/usr/local/share/man --with-jpeg8 --disable-static --docdir=/usr/local/share/doc/libjpeg-turbo-1.5.2
解釋一下各項參數簡單意思。
–prefix=/usr/local 指定庫安裝路徑
–mandir=/usr/local/share/man 指定man文件(相關命令參考信息)安裝路徑
–with-jpeg8 這個開關啟用與libjpeg 版本8的兼容性,即可使用libjpeg8的API.
–disable-static 阻止安裝靜態版本的庫
–docdir=/usr/local/share/doc/libjpeg-turbo-1.5.2 指定文檔安裝路徑
第三步,編譯及安裝。
$ make$ sudo make install
另外建議看看《Linux就該這么學》這本書熟悉下命令
5. 請問哪裡有windows平台C++的bitcoin源代碼下載,我想用VC來編譯。
很多朋友都知道如何在linux平台如何編譯比特幣程序,但是,到了windows平台,
就會感覺到無從下手. 其實, 比特幣程序是跨平台的.
你要編譯windows版的比特幣程序,基本上有兩種方法,一種是在linux平台
(推薦ubuntu 13.10)通過交叉編譯的方法來編譯.另外一種,就是直接在windows平台編譯.
我想,你既然要在windows平台使用,我就詳細介紹一下如何在windwows平台編譯比特幣程序.
我的平台:windows7
第一步:安裝變編譯環境QT和MINGW,msys
1、msys是一個在windows平台模擬shell的程序。
下載安裝程序之後,通過安裝管理程序,按安裝以下內容:
From MinGW installation manager -> All packages -> MSYS
選中以下安裝包
msys-base-bin
msys-autoconf-bin
msys-automake-bin
msys-libtool-bin
點 apply changes開始安裝。他會自動下載安裝好。
需要注意的是,確保不要安裝msys-gcc和msys-w32api ,因為這兩個包和我們的編譯系統發生沖突。
很多人出現一些莫名其妙的問題,就是因為這兩個包。
2、安裝 MinGW-builds
下載並解壓縮 i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z 到C盤根目錄 C:\
注意我的目錄結構。你盡量和我一樣。
3、設置PATH環境變數,將C:\mingw32\bin;添加到第一個。
4、在命令行模式下輸入 gc -v 會得到以下內容
c:\gcc -v
Using built-in specs.
COLLECT_GCC=c:\mingw32\bin\gcc.exe
COLLECT_LTO_WRAPPER=c:/mingw32/bin/../libexec/gcc/i686-w64-mingw32/4.8.2/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../../../src/gcc-4.8.2/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-cloog=/c/mingw482/prerequisites/i686-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='i686-posix-dwarf-rev3, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/include -I/c/mingw482/prerequisites/i686-zlib-static/include -I/c/mingw482/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/include -I/c/mingw482/prerequisites/i686-zlib-static/include -I/c/mingw482/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/lib -L/c/mingw482/prerequisites/i686-zlib-static/lib -L/c/mingw482/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware'
Thread model: posix
gcc version 4.8.2 (i686-posix-dwarf-rev3, Built by MinGW-W64 project)
至此,你的開發環境已經搭建好了,很簡單吧
第二部分:下載bitcoin引用的外部庫
我們把它們全部放在 C:\deps目錄下
2.1 安裝OpenSSL
進入啟動 MinGw shell 比如目錄:(C:\MinGW\msys\1.0\msys.bat)運行這個msys.bat,就會啟動一個shell環境,提示符是$
輸入命令
cd /c/deps/
tar xvfz openssl-1.0.1g.tar.gz
cd openssl-1.0.1g
Configure no-shared no-dso mingw
make
等待幾分鍾後,就把openssl編譯好了。
2.2 下載Berkeley DB
我們推薦使用 4.8版本
同樣在msys shell環境下輸入以下命令
cd /c/deps/
tar xvfz db-4.8.30.NC.tar.gz
cd db-4.8.30.NC/build_unix
../dist/configure --enable-mingw --enable-cxx --disable-shared --disable-replication
make
等待編譯
2.3 安裝Boost
msys命令:
cd C:\deps\boost_1_55_0\
bootstrap.bat mingw
b2 --build-type=complete --with-chrono --with-filesystem --with-program_options --with-system --with-thread toolset=gcc variant=release link=static threading=multi runtime-link=static stage
2.4 安裝Miniupnpc
cd C:\deps\miniupnpc
mingw32-make -f Makefile.mingw init upnpc-static
msys shell命令
cd /c/deps/protobuf-2.5.0
configure --disable-shared
make
2.6 qrencode:
命令
cd /c/deps/libpng-1.6.10
configure --disable-shared
make
LIBS="../libpng-1.6.10/.libs/libpng16.a ../../mingw32/i686-w64-mingw32/lib/libz.a" \
png_CFLAGS="-I../libpng-1.6.10" \
png_LIBS="-L../libpng-1.6.10/.libs" \
configure --enable-static --disable-shared --without-tools
make
2.7 安裝 Qt 5 庫
下載和解壓縮
在 windows命令行輸入:
set INCLUDE=C:\deps\libpng-1.6.10;C:\deps\openssl-1.0.1g\include
set LIB=C:\deps\libpng-1.6.10\.libs;C:\deps\openssl-1.0.1g
cd C:\Qt\5.2.1
configure.bat -release -opensource -confirm-license -static -make libs -no-sql-sqlite -no-opengl -system-zlib -qt-pcre -no-icu -no-gif -system-libpng -no-libjpeg -no-freetype -no-angle -no-vcproj -openssl-linked -no-dbus -no-audio-backend -no-wmf-backend -no-qml-debug
mingw32-make
set PATH=%PATH%;C:\Qt\5.2.1\bin
cd C:\Qt\qttools-opensource-src-5.2.1
qmake qttools.pro
mingw32-make
3. 下載Bitcoin 0.9.1
在msys shell下輸入以下命令行:
cp /c/deps/libpng-1.6.10/.libs/libpng16.a /c/deps/libpng-1.6.10/.libs/libpng.a
cd /c/bitcoin-0.9.1
./autogen.sh
CPPFLAGS="-I/c/deps/boost_1_55_0 \
-I/c/deps/db-4.8.30.NC/build_unix \
-I/c/deps/openssl-1.0.1g/include \
-I/c/deps \
-I/c/deps/protobuf-2.5.0/src \
-I/c/deps/libpng-1.6.10 \
-I/c/deps/qrencode-3.4.3" \
LDFLAGS="-L/c/deps/boost_1_55_0/stage/lib \
-L/c/deps/db-4.8.30.NC/build_unix \
-L/c/deps/openssl-1.0.1g \
-L/c/deps/miniupnpc \
-L/c/deps/protobuf-2.5.0/src/.libs \
-L/c/deps/libpng-1.6.10/.libs \
-L/c/deps/qrencode-3.4.3/.libs" \
./configure \
--disable-upnp-default \
--disable-tests \
--with-qt-incdir=/c/Qt/5.2.1/include \
--with-qt-libdir=/c/Qt/5.2.1/lib \
--with-qt-bindir=/c/Qt/5.2.1/bin \
--with-qt-plugindir=/c/Qt/5.2.1/plugins \
--with-boost-system=mgw48-mt-s-1_55 \
--with-boost-filesystem=mgw48-mt-s-1_55 \
--with-boost-program-options=mgw48-mt-s-1_55 \
--with-boost-thread=mgw48-mt-s-1_55 \
--with-boost-chrono=mgw48-mt-s-1_55 \
--with-protoc-bindir=/c/deps/protobuf-2.5.0/src
make
strip src/bitcoin-cli.exe
strip src/bitcoind.exe
strip src/qt/bitcoin-qt.exe
這樣,你就得到了變異好的 bitcoin-cli.exe和bitcoind.exe ,bitcoin-qt.exe(windows QT圖形界面的錢包軟體)
6. 怎麼獲取libjpeg中的頭文件
libjpeg使用十分簡單,而且源碼帶有例子程序,下面的代碼基本上就是該例子。所以沒什麼技術含量。
[cpp] view plain
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <setjmp.h>
#include <math.h>
#include <sys/time.h>
#include <time.h>
// jpeg庫頭文件必須放到stdio.h後面
#include "libjpeg/include/jpeglib.h"
#include "libjpeg/include/jerror.h"
typedef struct my_error_mgr * my_error_ptr;
void my_error_exit (j_common_ptr cinfo)
{
my_error_ptr myerr = (my_error_ptr) cinfo->err;
7. 如何用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就可以了。
8. vs2008 怎麼使用 jpeg.lib 庫
libjpeg項目地址:http://libjpeg.sourceforge.net/ ,請點http://www.ijg.org/files/下載jpegsr9a.zip ,並解壓。
因為項目需要用到libjpeg做圖片處理,網上的方法基本上都是nmake /f makefile.vc進行編譯,編譯好的也是針對win32
PC平台可以用的libjpeg,找了找,沒找到怎麼在wince、windows
mobile平台使用VS2008進行編譯的libjpeg,所以自己修改了相關配置文件,可以使用VS2008直接打開,進行編譯,最終生成
libjpeg.dll和libjpeg.lib文件。
使用方法,在你的項目中#pragma comment(lib,"libjpeg.lib") ,#include "jpeglib.h",具體使用方法請參考官方源碼包中自帶的示例代碼。如果需要用在wince
6.0平台上,請更換相應的SDK,重新進行編譯即可。
安裝環境:win7 64bit、VS2008英文版、Windows Mobile 6.5.3 Professional DTK.msi 開發環境。
9. 如何編譯新版的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)
10. python 怎麼安裝pillow
1. 安裝pip
[plain] view plain
sudo easy_install pip
pip 安裝成功就可以直接安裝pil或者pillow
2. 通過命令pip install pil
[plain] view plain
pip install Pil
Downloading/unpacking Pil
Could not find any downloads that satisfy the requirement Pil
Some externally hosted files were ignored (use --allow-external Pil to allow).
Cleaning up...
No distributions at all found for Pil
Storing debug log for failure in /Users/macbook/Library/Logs/pip.log
3. 所以就安裝pillow
[plain] view plain
pip install --use-wheel Pillow
Downloading/unpacking Pillow
Downloading Pillow-2.4.0.zip (6.5MB): 5.0MB downloaded
Cleaning up...
弄了會別的回來發現還沒有下載完,這叫一個慢呀,於是放棄
4. 通過Git下載源碼地址https://github.com/python-imaging/Pillow
[plain] view plain
git clone https://github.com/python-imaging/Pillow.git
然後開始編譯安裝
4.1
[plain] view plain
python setup.py build_ext -i
編譯完之後會提示運行測試例子,並且發現JPEG support not available
[plain] view plain
--------------------------------------------------------------------
version Pillow 2.4.0
platform darwin 2.7.5 (default, Aug 25 2013, 00:04:04)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]
--------------------------------------------------------------------
--- TKINTER support available
*** JPEG support not available
*** OPENJPEG (JPEG2000) support not available
--- ZLIB (PNG/ZIP) support available
*** LIBTIFF support not available
--- FREETYPE2 support available
*** LITTLECMS2 support not available
*** WEBP support not available
*** WEBPMUX support not available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.
To check the build, run the selftest.py script.
4.2 因為JPEG support not available,運行python selftest.py報告錯誤
[plain] view plain
1 tests of 57 failed.
於是只好卸載pillow
可以通過pip命令來卸載
[plain] view plain
pip uninstall pillow
sudo pip uninstall pillow
Password:
Uninstalling Pillow:
/Library/Python/2.7/site-packages/Pillow-2.4.0-py2.7-macosx-10.9-intel.egg
/usr/local/bin/pilconvert.py
/usr/local/bin/pildriver.py
/usr/local/bin/pilfile.py
/usr/local/bin/pilfont.py
/usr/local/bin/pilprint.py
Proceed (y/n)? y
Successfully uninstalled Pillow
成功之後需要安裝libjpeg的支持
[plain] view plain
brew install libjpeg
安裝成功之後重新編譯pillow
[plain] view plain
--------------------------------------------------------------------
version Pillow 2.4.0
platform darwin 2.7.5 (default, Aug 25 2013, 00:04:04)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
*** OPENJPEG (JPEG2000) support not available
--- ZLIB (PNG/ZIP) support available
*** LIBTIFF support not available
--- FREETYPE2 support available
*** LITTLECMS2 support not available
*** WEBP support not available
*** WEBPMUX support not available
--------------------------------------------------------------------
[plain] view plain
python selftest.py
[plain] view plain
--------------------------------------------------------------------
Pillow 2.4.0 TEST SUMMARY
--------------------------------------------------------------------
Python moles loaded from /Users/macbook/yyang/app-devel-source/python/Pillow/PIL
Binary moles loaded from /Users/macbook/yyang/app-devel-source/python/Pillow/PIL
--------------------------------------------------------------------
--- PIL CORE support ok
--- TKINTER support ok
--- JPEG support ok
*** JPEG 2000 support not installed
--- ZLIB (PNG/ZIP) support ok
*** LIBTIFF support not installed
--- FREETYPE2 support ok
*** LITTLECMS2 support not installed
*** WEBP support not installed
--------------------------------------------------------------------
Running selftest:
--- 57 tests passed.
最後執行安裝
[plain] view plain
sudo python setup.py install