获取网络图片(Bitmap)至内存或者SD卡

	/**
	 * 获取网络图片
	 * 注意权限:
	 * <uses-permission android:name="android.permission.INTERNET"/>
	 */
	private Bitmap getBitmapFromNetWork(String imageUrl){
		URL url=null;
		Bitmap bitmap=null;
		InputStream inputStream=null;
		HttpURLConnection httpURLConnection=null;
		ByteArrayOutputStream byteArrayOutputStream=null;
		try {
			url=new URL(imageUrl);
			httpURLConnection=(HttpURLConnection) url.openConnection();
			httpURLConnection.setConnectTimeout(5*1000);
			httpURLConnection.setReadTimeout(10*1000);
			httpURLConnection.setDoInput(true);
			httpURLConnection.setDoOutput(true);
			if (httpURLConnection.getResponseCode()==HttpStatus.SC_OK) {
				inputStream=httpURLConnection.getInputStream();
				byteArrayOutputStream=new ByteArrayOutputStream();
				int len=0;
				byte [] buffer=new byte[1024];
				while((len=inputStream.read(buffer))!=-1){
					byteArrayOutputStream.write(buffer, 0, len);
					byteArrayOutputStream.flush();
				}
				byte [] imageData=byteArrayOutputStream.toByteArray();
				bitmap=BitmapFactory.decodeByteArray(imageData, 0, imageData.length);
			} else {
				System.out.println("图片请求失败");
			}
		} catch (Exception e) {
			    System.out.println("e="+e.toString());
		}finally{
			try {
				if (byteArrayOutputStream!=null) {
					byteArrayOutputStream.close();
				}
				if (inputStream!=null) {
					inputStream.close();
				}
				if (httpURLConnection!=null) {
					httpURLConnection.disconnect();
				}
			} catch (Exception e) {
				 System.out.println("e="+e.toString());
			}
		}

		return bitmap;
	}

	/**
	 * 获取网络图片且保存至SDCard
	 * 注意权限:
	 * <uses-permission android:name="android.permission.INTERNET"/>
	 * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
	 */
	private void getBitmapFromNetWorkAndSaveToSDCard(String imageUrl,String filePath){
		URL url=null;
		File imageFile=null;
		HttpURLConnection httpURLConnection=null;
		FileOutputStream fileOutputStream=null;
		BufferedOutputStream bufferedOutputStream=null;
		InputStream inputStream=null;
		BufferedInputStream bufferedInputStream=null;
		try {
			url=new URL(imageUrl);
			httpURLConnection=(HttpURLConnection) url.openConnection();
			httpURLConnection.setConnectTimeout(5*1000);
			httpURLConnection.setReadTimeout(10*1000);
			httpURLConnection.setDoInput(true);
			httpURLConnection.setDoOutput(true);
			if (httpURLConnection.getResponseCode()==HttpStatus.SC_OK) {
				imageFile=new File(filePath);
				if (!imageFile.getParentFile().exists()) {
					imageFile.getParentFile().mkdirs();
				}
				if (!imageFile.exists()) {
					imageFile.createNewFile();
				}
				fileOutputStream=new FileOutputStream(imageFile);
				bufferedOutputStream=new BufferedOutputStream(fileOutputStream);
				inputStream=httpURLConnection.getInputStream();
				bufferedInputStream=new BufferedInputStream(inputStream);
				int len=0;
				byte [] buffer=new byte[1024];
				while((len=bufferedInputStream.read(buffer))!=-1){
					bufferedOutputStream.write(buffer, 0, len);
					bufferedOutputStream.flush();
				}
			} else {
				System.out.println("图片请求失败");
			}
		} catch (Exception e) {
			    System.out.println("e="+e.toString());
		}finally{
			try {
				if (fileOutputStream!=null) {
					fileOutputStream.close();
				}
				if (bufferedOutputStream!=null) {
					bufferedOutputStream.close();
				}
				if (inputStream!=null) {
					inputStream.close();
				}
				if (bufferedInputStream!=null) {
					bufferedInputStream.close();
				}
				if (httpURLConnection!=null) {
					httpURLConnection.disconnect();
				}
			} catch (Exception e) {
				 System.out.println("e="+e.toString());
			}
		}

	}
时间: 2024-11-09 00:33:02

获取网络图片(Bitmap)至内存或者SD卡的相关文章

Android实现从网络获取图片显示并保存到SD卡的方法_Android

本文实例讲述了Android实现从网络获取图片显示并保存到SD卡的方法.分享给大家供大家参考,具体如下: 问题: 如何不断获取图片并显示出来,达到视频的效果? 代码: public class GetPictureFromInternetActivity extends Activity { private ImageView imageView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInst

Android全屏截图的方法,返回Bitmap并且保存在SD卡上

Android全屏截图的方法,返回Bitmap并且保存在SD卡上 今天做分享,需求是截图分享,做了也是一个运动类的产品,那好,我们就直接开始做,考虑了一下,因为是全屏的分享,所有很自然而然的想到了View的getDrawingCache()方法来获取Bitmap,看到网上有人说截取不了WebView上的图片,倒是没有去尝试,因为我们的应用不需要,不过有时间还是要去试试,占占坑,这篇博客只是记录一下知识点,没什么技术含量 我们写个小Sample就好了 activity_main.xml <?xml

android将Bitmap对象保存到SD卡中的方法

  android将Bitmap对象保存到SD卡中的方法          这篇文章主要介绍了android将Bitmap对象保存到SD卡中的方法,涉及Android读写SD卡数据的方法,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 Bitmap logoBitmap = BitmapFactory.decodeResourc

android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法

android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法 原方法: public static Bitmap getSmallBitmap(String filePath, int reqWidth, int reqHeight) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; Bitma

android开发中获取手机上可用SD卡方法分享

现在的android手机型号复杂多样,造成了开发过程中使用官方的获取sd卡的方法在部分的手机上并不适用,所以需要进行开发的自己封装,以下就是代码,希望分享出来,大家共同学习 /*** 获取手机sd卡的工具类* @author wy*/public class SDCardUtils {/** avoid initializations of tool classes*/private SDCardUtils() {// TODO Auto-generated constructor stub}

android bitmap的内存分配和优化

首先Bitmap在Android虚拟机中的内存分配,在Google的网站上给出了下面的一段话  大致的意思也就是说,在Android3.0之前,Bitmap的内存分配分为两部分,一部分是分配在Dalvik的VM堆中,而像素数据的内存是分配在Native堆中,而到了Android3.0之后,Bitmap的内存则已经全部分配在VM堆上,这两种分配方式的区别在于,Native堆的内存不受Dalvik虚拟机的管理,我们想要释放Bitmap的内存,必须手动调用Recycle方法,而到了Android 3.

批量加载大图时,在不缓存到sd卡的前提下,如何避免oom并且不影响图片浏览

问题描述 批量加载大图时,在不缓存到sd卡的前提下,如何避免oom并且不影响图片浏览 我在一个界面中,需要加载很多大图片,而且还需要在该界面发送最多5张大图片(每张图片被我压缩到最大size为200k).之前加载图片用的是imageloader,但是imageloader没有提供让我可以自按照定义比例缩放图片的方法,因此,又重新使用Picasso来做,Picasso提供过来resize(width,height)的方法.那么问题来了:1.我使用imageloader或者使用Picasso的时候,

Android使用mount获取SD卡目录及如何获取SD卡内存

Android的系统是linux系统,我们可以使用linux命令mouunt来获取linux的挂载目录. 使用命令获取到的目录我并没有遍历,如果你还是获取不到,可以把mount获去到的所有目录都遍历一次. File  sdcard ; @SuppressLint("SdCardPath")     public File getSdCardFile() {         if (sdcard != null) {             return sdcard;         

Android获取SD卡路径及SDCard内存的方法

本文实例讲述了Android获取SD卡路径及SDCard内存的方法.分享给大家供大家参考.具体分析如下: 昨天在研究拍照后突破的存储路径的问题,开始存储路径写死为: private String folder = "/sdcard/DCIM/Camera/"(SD卡上拍照程序的图片存储路径); 后来发现这样写虽然一般不会出错,但不是很好,因为不同相机,可能路径会出问题.较好的方法是通过Environment 来获取路径,最后给出一个例子,教你怎样获取SDCard 的内存,显示出来告诉用