我正在創建一個圖像處理應用程序,它需要一些相當大的查找表。目前,我已將表格保存爲應用程序資源/原始目錄中的.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圖像顯示精細的任何圖像瀏覽軟件
「在應用程序啓動時加載所有這些(9)LUT需要很慢的25秒或更長時間」 - 代碼生成一個包含LUT的Java類。在應用程序中包含該Java源代碼。 「有什麼建議麼?」 - 發佈整個Java堆棧跟蹤。 – CommonsWare