2011-12-16 36 views
0

我想將Bitmap的實例轉換爲ByteArray的實例,以便能夠將它傳遞給Webservice。如何在不使用壓縮的情況下將位圖轉換爲ByteArray?

現在,我在做什麼是:

ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
bitmap.compress(CompressFormat.JPEG, 100, bos); 
byte[] imageData = bos.toByteArray(); 
ByteArrayBody byteArrayBody = new ByteArrayBody(imageData, imagePath); 

這裏的問題是,我使用的壓縮,使之發生,這導致降低位圖的品質。

有沒有其他方法可以做到這一點?

謝謝!

編輯: 我無法壓縮到PNG,因爲服務器使用JPEG

回答

3
  • 正如肖恩歐文所說,使用png而不是jpeg。
  • 你可以得到一個int數組與getPixels()
  • 您可以使用copyPixelsToBuffer()獲得一個緩衝區對象,您可以在以後將其轉換爲字節[]。

在任何情況下,png壓縮都是最好的解決方案,因爲它不需要儘可能多的中介操作並給出壓縮結果。

3

然後使用像PNG這樣的無損格式。 JPEG是有損的。

+0

對不起,我應該提到我真的需要保持JPEG格式,因爲這是服務器使用的格式。 – 2011-12-16 09:09:19

+1

然後,您可以通過從JPEG編碼器請求最高質量來盡你所能。如果您必須發送JPEG,那麼根據定義,您正在丟失一些信息 - 但最高質量的JPEG損失很少。 – 2011-12-16 10:01:27

相關問題