android | InputStream和Bitmap之间的相互转换

在写11讲,也就是下载文件的时候,遇到了问题。
①read-only file system
②NetworkOnMainThreadException
但是实际上我也是用adb shell改了文件夹的权限,但是没有用。
主要问题是第二个,我在按钮的OnClick中实际上是开了一个子线程,然后访问的网络,但是实际上是失败了。百度了一下说是:OnClick实际上是主线程调用的 What?没毛病呀,我又不是用的主线程。
然后,想起了12讲的,写的ImageView加载图片是成功了的,于是就在上一个案例的基础上进行测试,最后发现原来是自己在message中传入的是InputStream到Handler中就会出现主线程无法访问网络的错误。
于是,大胆猜测,也就是说,虽然最终访问网络的流InputStream我们得到了本地,但是链接未短或者说这个InputStream还是能代表网络连接,故而我们需要流的转换。
果不其然,就成功了。

InputStream->Bitmap

InputStream in = connection.getInputStream();
Bitmap bm = BitmapFactory.decodeStream(in);

Bitmap->InputStream

Bitmap bm = xxx;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
InputStream in = new ByteArrayInputStream(baos.toByteArray());

   Reprint policy


《android | InputStream和Bitmap之间的相互转换》 by 无涯明月 is licensed under a Creative Commons Attribution 4.0 International License
 Previous
android | Content Provider初识 android | Content Provider初识
mars视频19集,讲解Content Provider,按照惯例先百度一下它是什么?有什么用?其实,在android第一讲中也简略提到过:内容提供程序管理一组共享的应用数据。您可以将数据存储在文件系统、SQLite 数据库、网络上或您的
2019-08-21
Next 
android | ImageView加载网络上图片 android | ImageView加载网络上图片
百度了一下,发现有很多种实现方式,但是大致的思路都是一样的。地址一 地址二 不使用Handler,通过按钮更新UI视图敲敲打打,就开始写程序。然后发现程序崩溃!是的,然后又开始了百度之路。 解决思路划重点:在android4.0 之
2019-08-19
  TOC