2011-08-29 59 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