1. 淺談為什么Android和iOS圖片質(zhì)量差距那么大?
首先來說,作為一個安卓狗,機(jī)器當(dāng)然用的是安卓的手機(jī)?,F(xiàn)在的安卓手機(jī)大多數(shù)都會以高清拍照,動不動就幾千萬柔光相機(jī)來吸引各種買家。買來后,拍照發(fā)現(xiàn),哇塞——一張圖片好幾M呢,但是還是不如iOS的感覺,iOS的圖片也就1M左右吧。為什么會有這么大的差距呢?這要從安卓的設(shè)計初衷來說起,當(dāng)時谷歌開發(fā)Android的時候,考慮了大部分手機(jī)的配置并沒有那么高,所以對圖片處理是使用的Skia這個庫。當(dāng)然這個庫的底層還是是用的jpeg對圖片進(jìn)行壓縮處理。但是為了能夠適配低端的手機(jī)(這里的低端是指以前的硬件配置不高的手機(jī)),所以Skia在進(jìn)行圖片處理并沒有去使用壓縮圖像過程中基于圖像數(shù)據(jù)計算哈弗曼表(關(guān)于圖片壓縮中的哈弗曼表,請自行查閱相關(guān)資料),可以參考[這里](http://www.cnblogs.com/MaxIE/p/3951294.html)。這里面詳細(xì)解釋為何Google沒有使用高性能的壓縮,簡單來說就是考慮了當(dāng)時的手機(jī)硬件,將一個壓縮參數(shù)optimize_coding設(shè)置為了false,使得硬件較低的手機(jī)能夠很好的處理圖片。
2. NDK環(huán)境以及Cmake配置(篇幅有限這里不做過多的描述)
添加環(huán)境變量
將配置的環(huán)境變量添加到系統(tǒng)環(huán)境變量中。把%NDK_HOME%;添加到Path中。
3. jpeg庫的下載及編譯.so文件
下載libjpeg庫源碼,git clone地址
git clone git://git.linaro.org/people/tomgall/libjpeg-turbo/libjpeg-turbo.git -b linaro-android
將clone下來的源碼目錄改為jni(即源目錄libjpeg-turbo改為jni),通過ndk命令進(jìn)行編譯(需要配好ndk環(huán)境變量,命令行進(jìn)入修改好的jni目錄輸入命令即可):
ndk-build APP_ABI=armeabi-v7a,armeabi
在當(dāng)前目錄下生成libs和obj文件夾
4. 新建一個Android項目
新建一個Android項目,并勾選c++support。
如果環(huán)境配置好的話,AS會自動生成一個包含NDK的項目,里面實現(xiàn)了hello world。目錄結(jié)構(gòu)如下圖:
新建一個類,JpegUtils,聲明native方法
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26
