2011-08-29 108 views
3

Newb question;android將位圖轉換爲bufferedinputstream

我在內存中有一個位圖;

Private Bitmap MyPicture; 

然後稍後,我從相機的成像器填充MyPicture。我需要使用來自apache commons的FTP客戶端上傳該照片。

fcon.storeFile("filename", new BufferedInputStream(MyPicture.????)); 

但是apache想要一個BufferedInputStream。如何將內存位圖轉換爲內存流?

謝謝你們!

回答

13

這是我一直在尋找;

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
si.Image.compress(CompressFormat.JPEG, 100, stream); 
InputStream is = new ByteArrayInputStream(stream.toByteArray()); 

最後一行是缺失的一環......

+0

嘿@Lectare,你可以請包括一個完整的代碼片段?我不知道「si」是什麼,以及你的原始片段如何與這一片一起。 –

+0

@SkyKelsey,si.Image是一個位圖類型 – dimetil

+0

謝謝你隊友!你節省了很多小時! ;) – chemitaxis

0

位圖轉換爲字節數組是一樣簡單:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
MyPicture.compress(Bitmap.CompressFormat.PNG, 100, baos); 
baos.toByteArray(); 

然後你就可以創建一個BufferedInputStream的字節寫入文件。

+0

是位圖類型未壓縮永諾? – Lectere

+0

據我所知是的 – NewProggie

+0

不能得到它的工作; BufferedInputStream需要一個InputStream,而不是... – Lectere