2014-12-04 74 views
0

使用Android的圖庫應用程序選擇一張照片,稍後用httppost上傳。這張照片被上傳,但它的質量和尺寸都很低。我一直在閱讀有關設置Bitmap.CompressFormat.PNG將使其無損,但它將從2000x1500250x187的照片。上傳圖庫應用程序中的圖像(質量問題)

是否有可能得到縮略圖而不是實際圖像?我正在使用來自Google的照片。

代碼

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (resultCode == getActivity().RESULT_OK) { 
     selectedImage = Uri.parse(data.getDataString()); 

     try { 
      final Bitmap v = DecodeUriImage.Decode(selectedImage, getActivity()); 
      ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
      v.compress(Bitmap.CompressFormat.PNG, 100, bao); 
      byte[] byte_arr = bao.toByteArray(); 

      // Add image to array 
      images.set(selectedImageIndex, Base64.encodeToString(byte_arr, Base64.DEFAULT)); 

      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

結果

Image

回答

1

的Bitmap.CompressFormat.PNG將壓縮圖像,但是這取決於你在非使用什麼扭結格式壓縮的圖像。你應該使用矢量圖像來獲得最好的效果,因爲在「壓縮傳輸」時,immage失去了在不讓圖像變大時的質量。

0

沒有理由將所選圖像放在位圖中供以後使用。此外,你沒有顯示在DecodeUriImage.Decode(selectedImage, getActivity());中發生了什麼。也許它的質量改變了。而是意識到你在selectedImage中有一個媒體路徑,你可以將它轉換爲文件系統的真實路徑。保存該路徑供以後使用。

如果稍後使用它,則只需將該文件加載到字節數組中並對base64進行編碼。不要使用Bitmapfactory。