2013-08-03 45 views
2

我想讓用戶選擇他們想要減少圖像文件大小的次數,可以是低,中或高,然後將圖像上傳到服務器。這部分是簡單。減少Android中的圖像文件大小(圖像類型未知)

下一部分是文件大小的實際減少。我得到的圖像URI,我想減少文件圖像文件的大小,圖像類型可能是PNG,JPG或其他。

我知道Bitmap.compress(),這是實現的唯一方法還是存在現有的開源庫?

回答

1
Bitmap bitmap; 
bitmap = MyBitmapFactory.decodeFile(PATHTOPICT, UPLOAD_REQUIRED_SIZE); 
if (bitmap != null) { 
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 

與方法(與谷歌找到):

public static Bitmap decodeFile(String filePath, final int REQUIRED_SIZE) { 
    BitmapFactory.Options o = new BitmapFactory.Options(); 
    o.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(filePath, o); 
    int width_tmp = o.outWidth, height_tmp = o.outHeight; 
    int scale = 1; 
    while (true) { 
     if (width_tmp <= REQUIRED_SIZE && height_tmp <= REQUIRED_SIZE) 
      break; 
     width_tmp /= 2; 
     height_tmp /= 2; 
     scale *= 2; 
    } 
    BitmapFactory.Options o2 = new BitmapFactory.Options(); 
    o2.inSampleSize = scale; 
    Bitmap bitmap = BitmapFactory.decodeFile(filePath, o2); 
    return bitmap; 
} 

如果事情得到NULL,它沒有圖像/ 按功率按比例2推薦!!!

+0

您的解決方案僅適用於JPEG嗎?你能解釋一下PNG和BMP嗎? – orange

+0

如何將結尾從* .jpg編輯爲* .whatyouwant或嘗試使用Bitmap.CompressFormat.PNG –