资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
java.lang.OutOfMemoryError: bitmap size exceeds VM budget解决方法最近在做电信的一个视频地图项目时,需要获取网络图片预览,用到图片缩略图技术,通过参考了很多同行的方法,本人写了以下获取网络图片缩略图的代码,如有不妥, 望高手指正,谢谢。以下是实现方法:获取缩略图关键代码byte imageByte=getImageFromURL(urlPathi.trim(); /以下是把图片转化为缩略图再加载BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; /首先设置 .inJustDecodeBounds为 true Bitmap bitmap=BitmapFactory.decodeByteArray(imageByte, 0, imageByte.length, options); /这时获取到的bitmap 是 null 的,尚未调用系统内存资源options.inJustDecodeBounds = false; 得到图片有宽和高的options对象后,设置.inJustDecodeBounds为 false 。int be = (int)(options.outHeight / (float)200); if (be = 0) be = 1; options.inSampleSize = be; /计算得到图片缩小倍数bitmapsi=BitmapFactory.decodeByteArray(imageByte, 0, imageByte.length,options); /获取真正的图片对象(缩略图)以下是批量获取网络图片缩略图的详细代码:Android 代码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - /* * 根据图片网络地址获取图片的byte 类型数据* param urlPath 图片网络地址* return 图片数据*/ public byte getImageFromURL(String urlPath) byte data=null; InputStream is=null; HttpURLConnection conn=null; try URL url=new URL(urlPath); conn=(HttpURLConnection) url.openConnection(); conn.setDoInput(true); /conn.setDoOutput(true); conn.setRequestMethod(GET); conn.setConnectTimeout(6000); is=conn.getInputStream(); if(conn.getResponseCode()=200) data=readInputStream(is); else System.out.println(发生异常! ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - catch (MalformedURLException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); finally conn.disconnect(); try is.close(); catch (IOException e) e.printStackTrace(); return data; /* * 读取 InputStream数据,转为byte 数据类型* param is InputStream数据* return 返回 byte 数据*/ public byte readInputStream(InputStream is) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - ByteArrayOutputStream baos=new ByteArrayOutputStream(); byte buffer=new byte1024; int length=-1; try while(length=is.read(buffer)!=-1) baos.write(buffer, 0, length); baos.flush(); catch (IOException e) e.printStackTrace(); byte data=baos.toByteArray(); try is.close(); baos.close(); catch (IOException e) e.printStackTrace(); return data; /* 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - * 根据网络图片地址集批量获取网络图片* param urlPath 网络图片地址数组* return 返回 Bitmap 数据类型的数组*/ public Bitmap getBitmapArray(String urlPath) int length=urlPath.length; if(urlPath=null|length1) return null; else Bitmap bitmaps=new Bitmaplength; for (int i = 0; i length; i+) byte imageByte=getImageFromURL(urlPathi.trim(); /以下是把图片转化为缩略图再加载BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; Bitmap bitmap=BitmapFactory.decodeByteArray(imageByte, 0, imageByte.length, options); options.inJustDecodeBounds = false; int be = (int)(options.outHeight / (float)200); if (be = 0) be = 1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - options.inSampleSize = be; bitmapsi=BitmapFactory.decodeByteArray(imageByte, 0, imageByte.length,options); return bitmaps; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号