2014-07-03 21 views
-4

我在資源文件夾中有很多png圖像。我需要在ImageView和Gallary的應用程序中使用它們。 Android僅支持位圖圖像。那麼什麼是存儲文件的正確方法。例如,當第一次運行應用程序時,它將圖像從png解碼到bmp並將其保存在內部存儲器的某個位置,是否有可能?每個啓動應用程序檢查是否存在與bmp圖像文件夾,如果存在它使用以前解碼的bmp圖像。 或者還有另一種存儲大量圖像的方式? 任何幫助將不勝感激。謝謝 -4但0答案。請幫助 我不想在第一次應用程序啓動時調用解碼方法一次,而是使用保存在內部存儲器上的已解碼bmps。如何存儲應用程序的圖像

回答

0

開始:

  1. 從巴紐JPEG轉換的最大圖像。 Jpeg對於移動環境有一些缺點。但它確實產生了較小的圖像。

  2. 嘗試使用png'reducer'工具,如OptiPNGPNGCrush以減少png圖像大小。您通常不會在圖像質量上看到明顯的差異。


而且,如果不解決您的問題,考慮拉上所有(或至少是最大)的圖像壓縮成zip文件被存儲在資產/目錄下,並在第一次運行,打開它到一個SD卡文件夾。

後你做,你將需要填充您的ImageViews如下:

Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 
ImageView myImage = (ImageView) findViewById(R.id.imageviewTest); 
myImage.setImageBitmap(myBitmap); 


這是一種痛苦,但如果你沒有其他的選擇..

提取資產/ zip文件像這樣:

public void unzipFromAssets(String zipFileInAssets, String destFolder) { 
     FileInputStream fin = new FileInputStream(zipFileInAssets); 
     ZipInputStream zin = new ZipInputStream(fin); 
     ZipEntry ze = null; 
     while ((ze = zin.getNextEntry()) != null) { 
      if(ze.isDirectory()) { 
       File f = new File(_location + ze.getName()); 
       if(!f.isDirectory()) { 
       f.mkdirs(); 
       } 
      } else { 
       FileOutputStream fout = new FileOutputStream(destFolder + ze.getName()); 
       for (int c = zin.read(); c != -1; c = zin.read()) { 
        fout.write(c); 
       } 
       zin.closeEntry(); 
       fout.close(); 
     } 
     } 
     zin.close(); 
} 

你需要在這個方法上工作一下 - try..catch,獲取斷言/文件的路徑等。

祝你好運。

相關問題