android获取网络图片的用法
来源:互联网 发布:数据代码10054 编辑:程序博客网 时间:2024/05/16 12:34
关于android获取网络图片主要是吧网络图片的数据流读入到内存中然后用
方法来将图片流传化为bitmap类型 这样才能用到
来进行转化,这些大家都了解,主要的问题在获取bitmap时候居然为null 怎么回事呢?我开始的时候遇见这个问题,并且困扰了一段时间,最后发现错误了
下面是我的错误代码
下面是 GetImageForNet.getImage()方法的代码清单
看起来没有问题 获取网络图片输入流,填充二进制数组,返回二进制数组,然后使用 Bitmap bitMap = BitmapFactory.decodeByteArray(data, 0, length); data就是返回的二进制数组
获取bitMap 看起来没有问题,可是bitMap就是为null!汗!最后慢慢整理思路,排除法去查找出现异常的地方,最后发现可能BitmapFactory.decodeByteArray方法中所需要的data不一定是传统意义上的字节数组,查看android api,最后发现BitmapFactory.decodeByteArray所需要的data字节数组并不是想象中的数组!而是把输入流传化为字节内存输出流的字节数组格式,找到原因后改进一下,成功!附上成功后的代码
下面是改进后的 GetImageForNet.getImage()方法的代码清单
Bitmap bitMap = BitmapFactory.decodeByteArray(data, 0, length);
方法来将图片流传化为bitmap类型 这样才能用到
imageView.setImageBitmap(bitMap);
来进行转化,这些大家都了解,主要的问题在获取bitmap时候居然为null 怎么回事呢?我开始的时候遇见这个问题,并且困扰了一段时间,最后发现错误了
下面是我的错误代码
byte[] data = GetImageForNet.getImage(path); int length = data.length; Bitmap bitMap = BitmapFactory.decodeByteArray(data, 0, length); imageView.setImageBitmap(bitMap);
下面是 GetImageForNet.getImage()方法的代码清单
public static byte[] getImage(String path) throws Exception {URL url = new URL(path);HttpURLConnection httpURLconnection = (HttpURLConnection)url.openConnection();httpURLconnection.setRequestMethod("GET");httpURLconnection.setReadTimeout(6*1000);InputStream in = null;byte[] b = new byte[1024];int len = -1;if (httpURLconnection.getResponseCode() == 200) { in = httpURLconnection.getInputStream(); in.read(b); in.close(); return b; }return null;}
看起来没有问题 获取网络图片输入流,填充二进制数组,返回二进制数组,然后使用 Bitmap bitMap = BitmapFactory.decodeByteArray(data, 0, length); data就是返回的二进制数组
获取bitMap 看起来没有问题,可是bitMap就是为null!汗!最后慢慢整理思路,排除法去查找出现异常的地方,最后发现可能BitmapFactory.decodeByteArray方法中所需要的data不一定是传统意义上的字节数组,查看android api,最后发现BitmapFactory.decodeByteArray所需要的data字节数组并不是想象中的数组!而是把输入流传化为字节内存输出流的字节数组格式,找到原因后改进一下,成功!附上成功后的代码
try { byte[] data = GetImageForNet.getImage(path); String d = new String(data); // File file = new File("1.jpg"); //OutputStream out = new FileOutputStream(file); //out.write(data); //out.close(); int length = data.length; Bitmap bitMap = BitmapFactory.decodeByteArray(data, 0, length); imageView.setImageBitmap(bitMap); //imageView.seti} catch (Exception e) {Log.i(TAG, e.toString());Toast.makeText(DataActivity.this, "获取图片失败", 1).show();}
下面是改进后的 GetImageForNet.getImage()方法的代码清单
public static byte[] getImage(String path) throws Exception {URL url = new URL(path);HttpURLConnection httpURLconnection = (HttpURLConnection)url.openConnection();httpURLconnection.setRequestMethod("GET");httpURLconnection.setReadTimeout(6*1000);InputStream in = null;byte[] b = new byte[1024];int len = -1;if (httpURLconnection.getResponseCode() == 200) { in = httpURLconnection.getInputStream(); byte[] result = readStream(in); in.close(); return result; }return null;}public static byte[] readStream(InputStream in) throws Exception{ByteArrayOutputStream outputStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = -1;while((len = in.read(buffer)) != -1) {outputStream.write(buffer, 0, len);}outputStream.close();in.close();return outputStream.toByteArray();}转自:http://www.4ucode.com/Study/Topic/1952873
- android获取网络图片的用法
- android获取网络图片的用法
- android获取网络图片的用法 BitmapFactory.decodeByteArray
- android获取网络图片的用法 BitmapFactory.decodeByteArray 返回null
- android - 获取网络图片
- android获取网络图片
- android获取网络图片
- Android获取网络图片
- android 获取网络图片
- android 获取网络图片
- android 获取网络图片
- Android获取网络图片
- Android 获取网络图片
- android 获取网络图片
- android 获取网络图片
- android获取网络图片
- android获取网络上的图片
- Android获取网络图片的方法
- 关于C#多线程、网络编程与计时器Timer的一点使用心得
- 2012.8.9 言无信,行无果
- linux下获取系统时间的方法
- 为什么我的帐号登录后显示为“系统帐号”(Welcome System Account)
- MySQL分页查询
- android获取网络图片的用法
- hdu 1003
- OCP-047 CREATE VIEW 必须指定列别名
- Androidpn里的Xmpp的理解(消息推送)
- Linux 的多线程编程的高效开发经验
- Discuz!NT数据库读写分离方案
- 如何让frameset定宽居中
- python-常用小程序-文件夹
- 打开.chm文件问题的解决办法