2015-12-22 18 views
0

我正在創建一個圖像處理應用程序,它需要一些相當大的查找表。目前,我已將表格保存爲應用程序資源/原始目錄中的.txt文件,作爲值爲3x4913的數組(3代表R,G,B)。在應用程序啓動時加載所有這些(9)LUT需要非常慢的25秒或更長時間。Android BitmapFactory.decodeResource()錯誤或用於加載大LUT的替代選項

我的同事建議我將LUT數據本身保存爲png格式,我已經完成了9個不同的寬度爲1和高度爲4913的圖像。我將它們放置在可繪製文件夾中並嘗試解碼他們使用BitmapFactory.decodeResource(),,它適用於任何其他可繪製而沒有錯誤。當我與LUT圖像做到這一點,點擊調試器「查看位圖」,它說:

「而評估表達錯誤:方法扔‘Java.Lang.IllegalArgumentExpression’例外」

我什至嘗試使用一些BitmapFactory選項,但具有相同的結果:

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inScaled = false; 
options.outHeight = 4913; 
options.outWidth = 1; 

// Error here 
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), lutIds[n], options); 

bitmap.getPixels(pixels, 0, 1, 0, 0, 1, 4913); 

有什麼建議嗎?或者,或者,我還有什麼想法可以快速加載每次應用程序啓動時的數據。每個數字的最大值是255,因此它們可以被短褲儲存。

謝謝!

注:LUT PNG圖像顯示精細的任何圖像瀏覽軟件

+0

「在應用程序啓動時加載所有這些(9)LUT需要很慢的25秒或更長時間」 - 代碼生成一個包含LUT的Java類。在應用程序中包含該Java源代碼。 「有什麼建議麼?」 - 發佈整個Java堆棧跟蹤。 – CommonsWare

回答

0

更新:

事實證明,這是所有工作的好,唯一的問題是,Android的工作室拒絕顯示某些尺寸在調試過程中,似乎是位圖。菜鳥錯誤!

對於那些有興趣從.txt文件加載數據需要約28-30秒在我的手機(Xperia Z3),而將數據轉換爲PNG使用Python並加載PNG,而不是花費0.1秒!