提高圖片處理回顯速度的方法及其移動終端的制作方法
【專利摘要】本發(fā)明公開了一種提高圖片處理回顯速度的方法,包括以下步驟:獲取原始圖片對應的第一數(shù)據(jù)并由Java層傳輸至Native層;在所述Native層對所述原始圖片進行處理;將處理后得到的第二數(shù)據(jù)傳輸至Java層并根據(jù)所述第二數(shù)據(jù)顯示處理效果。與現(xiàn)有技術相比,本發(fā)明通過將原始圖片對應的第一數(shù)據(jù)由Java層傳輸至Native層,實現(xiàn)了在Native層對原始圖片進行處理,最后將處理結果傳輸給Java層并顯示處理效果,由于圖片在底層比上層(以Java層作為參照,Native層是Java層的底層)的處理速度快,從而本發(fā)明相對現(xiàn)有技術圖片處理速度更快,進而圖片處理效果的回顯速度也更快,用戶體驗較好。本發(fā)明同時公開了一種提高圖片處理回顯速度的移動終端。
【專利說明】提高圖片處理回顯速度的方法及其移動終端
【技術領域】
[0001]本發(fā)明涉及圖像處理【技術領域】,尤其涉及一種提高圖片處理回顯速度的方法及其移動終端。
【背景技術】
[0002]目前隨著用戶需求的不斷提高,經(jīng)常會需要對圖片做特殊的處理,比如將圖片做出黑白或者老照片的效果,或者對圖片進行拉伸、扭曲等變換。當前,進行圖片處理一般是在Java層進行的,而Java層圖片處理速度較慢,從而處理后的圖片回顯速度也較慢,導致不能即時的將處理效果呈現(xiàn)給用戶,用戶體驗較差。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于提供一種提高圖片處理回顯速度的方法,以提高圖片處理速度,進而將圖片處理效果即時的呈現(xiàn)給用戶,提高用戶體驗。
[0004]本發(fā)明的另一目的在于提供一種提高圖片處理回顯速度的移動終端,以提高圖片處理速度,進而將圖片處理效果即時的呈現(xiàn)給用戶,提高用戶體驗。
[0005]為了實現(xiàn)上述目的,本發(fā)明提供了一種提高圖片處理回顯速度的方法,包括以下步驟:
[0006]獲取原始圖片對應的第一數(shù)據(jù)并由Java層傳輸至Native層;
[0007]在所述Native層對所述原始圖片進行處理;
[0008]將處理后得到的第二數(shù)據(jù)傳輸至Java層并根據(jù)所述第二數(shù)據(jù)顯示處理效果。
[0009]與現(xiàn)有技術相比,本發(fā)明通過將原始圖片對應的第一數(shù)據(jù)由Java層傳輸至Native層,實現(xiàn)了在Native層對原始圖片進行處理,最后將處理結果傳輸給Java層并顯示處理效果,由于圖片在底層比上層(以Java層作為參照,Native層是Java層的底層)的處理速度快,而數(shù)據(jù)在Native層與Java層之間的傳輸時間相對圖片處理時間可以忽略不計,從而本發(fā)明圖片處理速度更快,進而圖片處理效果的回顯速度也更快,用戶體驗較好。
[0010]較佳地,所述“獲取原始圖片對應的第一數(shù)據(jù)”具體為:
[0011]將所述原始圖片解碼為位圖文件,所述位圖文件對應的數(shù)據(jù)即為所述第一數(shù)據(jù)。
[0012]較佳地,所述“獲取原始圖片對應的第一數(shù)據(jù)”之后還包括:
[0013]獲取字節(jié)緩沖區(qū)以存儲所述第一數(shù)據(jù)。
[0014]較佳地,所述“獲取字節(jié)緩沖區(qū)以存儲所述第一數(shù)據(jù)”具體包括:
[0015]通過直接分配的方式申請連續(xù)的內(nèi)存作為字節(jié)緩沖區(qū);
[0016]將所述第一數(shù)據(jù)讀入所述字節(jié)緩沖區(qū)。
[0017]較佳地,將第一數(shù)據(jù)由Java層傳輸至Native層的具體過程為:
[0018]將所述字節(jié)緩沖區(qū)存儲的第一數(shù)據(jù)通過Java本地調(diào)用傳輸至Native層。
[0019]較佳地,所述原始圖片為jpg、jpeg或png格式。
[0020]相應的,本發(fā)明還提供了一種提高圖片處理回顯速度的移動終端,包括:[0021]獲取下傳模塊,用于獲取原始圖片對應的第一數(shù)據(jù)并由Java層傳輸至Native層;
[0022]處理模塊,用于在所述Native層對所述原始圖片進行處理;
[0023]上傳顯示模塊,用于將處理后得到的第二數(shù)據(jù)傳輸至Java層并根據(jù)所述第二數(shù)據(jù)顯示處理效果。
[0024]較佳地,所述獲取下傳模塊具體包括:
[0025]獲取單元,用于將所述原始圖片解碼為位圖文件,所述位圖文件對應的數(shù)據(jù)即為所述第一數(shù)據(jù);以及
[0026]下傳單元,用于將所述第一數(shù)據(jù)由Java層傳輸至Native層。
[0027]較佳地,所述提高圖片處理回顯速度的移動終端還包括:
[0028]存儲模塊,用于獲取字節(jié)緩沖區(qū)以存儲所述第一數(shù)據(jù)。
[0029]較佳地,所述下傳單元具體為:
[0030]將所述字節(jié)緩沖區(qū)存儲的第一數(shù)據(jù)通過Java本地調(diào)用傳輸至Native層。
[0031]通過以下的描述并結合附圖,本發(fā)明將變得更加清晰,這些附圖用于解釋本發(fā)明的實施例。
【專利附圖】
【附圖說明】
[0032]圖1為本發(fā)明提高圖片處理回顯速度的方法一實施例的流程圖。
[0033]圖2為本發(fā)明提高圖片處理回顯速度的方法另一實施例的流程圖。
[0034]圖3為本發(fā)明提高圖片處理回顯速度的移動終端一實施例的結構框圖。
【具體實施方式】
[0035]現(xiàn)在參考附圖描述本發(fā)明的實施例,附圖中類似的元件標號代表類似的元件。
[0036]請參考圖1,本發(fā)明提高圖片處理回顯速度的方法一實施例的工作流程包括以下步驟:
[0037]步驟S101,獲取原始圖片對應的第一數(shù)據(jù)并由Java層傳輸至Native層,原始圖片
即為待處理的圖片,可以為jpg、jpeg、png或bitmap格式等,原始圖片與第一數(shù)據(jù)是--對
應關系,通過第一數(shù)據(jù)可以映射為原始圖片;
[0038]步驟S102,在Native層對原始圖片進行處理;
[0039]步驟S103,將處理后得到的第二數(shù)據(jù)傳輸至Java層并根據(jù)第二數(shù)據(jù)顯示處理效果,其中第二數(shù)據(jù)與進行處理后的圖片是一一對應的,通過第二數(shù)據(jù)可以映射得到處理后的圖片,即可以看到圖片處理效果。
[0040]從以上描述可以看出,本發(fā)明通過將原始圖片的第一數(shù)據(jù)由Java層傳輸至Native層,實現(xiàn)了在Native層對原始圖片進行處理,最后將處理結果傳輸給Java層并顯示處理效果,由于圖片在底層比上層(以Java層作為參照,Native層是Java層的底層)的處理速度快,而數(shù)據(jù)在Native層與Java層之間的傳輸時間相對圖片處理時間可以忽略不計,從而本發(fā)明相對現(xiàn)有技術圖片處理速度更快,圖片處理效果的回顯速度也更快,用戶體驗較好。
[0041]再請參考圖2,本發(fā)明提高圖片處理回顯速度的方法另一實施例的工作流程包括以下步驟:
[0042]步驟S201,將原始圖片解碼為位圖文件(Bitmap),位圖文件對應的數(shù)據(jù)即為第一數(shù)據(jù);其中原始圖片可以為jpg、jpeg或png格式,本實施例中以原始圖片為jpg格式為例進行說明,步驟“將原始圖片解碼為位圖文件(Bitmap)”即為“將原始圖片由jpg格式解碼為位圖文件(Bitmap)”,而位圖文件(Bitmap)的大小則根據(jù)移動終端屏幕尺寸來設計,如當移動終端的尺寸為1280*960像素時,可以將原始圖片由jpg格式解碼為1280*960大小的位圖文件;
[0043]步驟S202,通過直接分配(allocateDirect)的方式申請連續(xù)的內(nèi)存作為字節(jié)緩沖區(qū)(ByteBuffer),即,采用ByteBuffer的allocateDirect的方法來申請一塊連續(xù)的內(nèi)存,并將位圖文件(Bitmap)的第一數(shù)據(jù)讀入該內(nèi)存中;
[0044]在Java中,當需要對數(shù)據(jù)進行更底層(以Java層作為參照,Native層是Java層的底層)的操作時,通常是對數(shù)據(jù)的字節(jié)(byte )形式進行操作,這時就需要用到ByteBuffer這樣一個類。而ByteBuffer有allocate和allocateDirect這兩種分配方式,當操作數(shù)據(jù)量很小時,兩種分配方式操作使用時間基本是相同的,第一種方式有時可能會更快,但是當數(shù)據(jù)量很大時,第二種方式會遠遠大于第一種的分配方式。由于位圖文件(Bitmap)是非壓縮格式的,需要占用較大的存儲空間,故實施例中采用ByteBuffer的allocateDirect的方式來申請獲取一塊連續(xù)的內(nèi)存。
[0045]步驟S203,將第一數(shù)據(jù)(對應位圖文件)讀入字節(jié)緩沖區(qū)(ByteBuffer);
[0046]步驟S204,將字節(jié)緩沖區(qū)內(nèi)存儲的第一數(shù)據(jù)通過Java本地調(diào)用接口( JavaNative Interface,即 JNI)由 Java 層傳輸至 Native 層;
[0047]步驟S205,在Native層對接收到的第一數(shù)據(jù)(對應原始圖片)進行處理,如進行美化處理;具體的,在Native層可以通過mEnv_>GetDirectBufferAddress來獲取Java層傳入的字節(jié)緩沖區(qū)數(shù)據(jù)(即第一數(shù)據(jù));
[0048]步驟S206,將處理得到的第二數(shù)據(jù)傳輸至Java層,具體的,可以通過env_>SetByteArrayRegion (array, O, (jint)m0utBuf->size, (jbyte*)m0utBuf->data)這種方法將第二數(shù)據(jù)讀入到JAVA層的數(shù)組中;
[0049]步驟S207,根據(jù)上傳回來的第二數(shù)據(jù)得到處理后的圖片并顯示,即可以顯示圖片的處理效果。
[0050]請參考圖3,本發(fā)明提高圖片處理回顯速度的移動終端100在一較佳實施例中包括:
[0051]獲取下傳模塊10,用于獲取原始圖片對應的第一數(shù)據(jù)并由Java層傳輸至Native層;具體的,獲取下傳模塊10包括獲取單元101和下傳單元103,獲取單元101用于將原始圖片解碼為位圖文件,位圖文件對應的數(shù)據(jù)即為第一數(shù)據(jù),下傳單元103用于將第一數(shù)據(jù)由Java層傳輸至Native層,具體的,下傳單元103是將字節(jié)緩沖區(qū)存儲的第一數(shù)據(jù)通過Java本地調(diào)用(JNI)傳輸至Native層;
[0052]存儲模塊12,用于獲取字節(jié)緩沖區(qū)以存儲第一數(shù)據(jù),具體的,存儲模塊12通過直接分配(allocateDirect)的方式申請連續(xù)的內(nèi)存作為字節(jié)緩沖區(qū)(ByteBuffer),即,采用ByteBuffer的allocateDirect的方法來申請一塊連續(xù)的內(nèi)存,并將位圖文件(Bitmap)的第一數(shù)據(jù)讀入該內(nèi)存中;[0053]處理模塊14,用于在Native層對原始圖片進行處理;以及
[0054]上傳顯示模塊16,用于將處理后得到的第二數(shù)據(jù)傳輸至Java層并根據(jù)第二數(shù)據(jù)顯示處理效果。
[0055]本發(fā)明提高圖片處理回顯速度的移動終端100工作時,首先通過獲取單元101將原始圖片解碼為位圖文件,并通過存儲模塊12獲取字節(jié)緩沖區(qū)來存儲位圖文件對應的第一數(shù)據(jù),然后下傳單元103將第一數(shù)據(jù)由Java層傳輸至Native層,在Native層通過處理模塊14對原始圖片進行處理,最后上傳顯示模塊16將處理后得到的第二數(shù)據(jù)傳輸至Java層并根據(jù)第二數(shù)據(jù)顯示處理效果,從而實現(xiàn)了在Native層對原始圖片進行處理,由于圖片在底層比上層(以Java層作為參照,Native層是Java層的底層)的處理速度快,而數(shù)據(jù)在Native層與Java層之間的傳輸時間相對圖片處理時間可以忽略不計,從而本發(fā)明相對現(xiàn)有技術圖片處理速度更快,進而圖片處理效果的回顯速度也更快,用戶體驗較好。
[0056]以上所揭露的僅為本發(fā)明的較佳實例而已,其作用是方便本領域的技術人員理解并據(jù)以實施,當然不能以此來限定本發(fā)明之權利范圍,因此依本發(fā)明申請專利范圍所作的等同變化,仍屬于本發(fā)明所涵蓋的范圍。
【權利要求】
1.一種提高圖片處理回顯速度的方法,其特征在于,包括以下步驟: 獲取原始圖片對應的第一數(shù)據(jù)并由Java層傳輸至Native層; 在所述Native層對所述原始圖片進行處理; 將處理后得到的第二數(shù)據(jù)傳輸至Java層并根據(jù)所述第二數(shù)據(jù)顯示處理效果。
2.如權利要求1所述的提高圖片處理回顯速度的方法,其特征在于,所述“獲取原始圖片對應的第一數(shù)據(jù)”具體為: 將所述原始圖片解碼為位圖文件,所述位圖文件對應的數(shù)據(jù)為所述第一數(shù)據(jù)。
3.如權利要求2所述的提高圖片處理回顯速度的方法,其特征在于,所述“獲取原始圖片對應的第一數(shù)據(jù)”之后還包括: 獲取字節(jié)緩沖區(qū)以存儲所述第一數(shù)據(jù)。
4.如權利要求3所述的提高圖片處理回顯速度的方法,其特征在于,所述“獲取字節(jié)緩沖區(qū)以存儲所述第一數(shù)據(jù)”具體包括: 通過直接分配的方式申請連續(xù)的內(nèi)存作為字節(jié)緩沖區(qū); 將所述第一數(shù)據(jù)讀入所述字節(jié)緩沖區(qū)。
5.如權利要求4所述的提高圖片處理回顯速度的方法,其特征在于,將第一數(shù)據(jù)由Java層傳輸至Native層的具體過程為: 將所述字節(jié)緩沖區(qū)存儲的第一數(shù)據(jù)通過Java本地調(diào)用傳輸至Native層。
6.如權利要求1所述的提高圖片處理回顯速度的方法,其特征在于,所述原始圖片為jpg、jpeg 或 png 格式。
7.一種提高圖片處理回顯速度的移動終端,其特征在于,包括: 獲取下傳模塊,用于獲取原始圖片對應的第一數(shù)據(jù)并由Java層傳輸至Native層; 處理模塊,用于在所述Native層對所述原始圖片進行處理; 上傳顯示模塊,用于將處理后得到的第二數(shù)據(jù)傳輸至Java層并根據(jù)所述第二數(shù)據(jù)顯示處理效果。
8.如權利要求7所述的提高圖片處理回顯速度的移動終端,其特征在于,所述獲取下傳模塊具體包括: 獲取單元,用于將所述原始圖片解碼為位圖文件,所述位圖文件對應的數(shù)據(jù)即為所述第一數(shù)據(jù);以及 下傳單元,用于將所述第一數(shù)據(jù)由Java層傳輸至Native層。
9.如權利要求8所述的提高圖片處理回顯速度的移動終端,其特征在于,還包括: 存儲模塊,用于獲取字節(jié)緩沖區(qū)以存儲所述第一數(shù)據(jù)。
10.如權利要求9所述的提高圖片處理回顯速度的移動終端,其特征在于,所述下傳單元具體為: 將所述字節(jié)緩沖區(qū)存儲的第一數(shù)據(jù)通過Java本地調(diào)用傳輸至Native層。
【文檔編號】H04M1/725GK103929536SQ201410127221
【公開日】2014年7月16日 申請日期:2014年3月31日 優(yōu)先權日:2014年3月31日
【發(fā)明者】李小朋 申請人:廣東明創(chuàng)軟件科技有限公司