获取网络图片(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());
			}
		}

	}

获取网络图片(Bitmap)至内存或者SD卡,布布扣,bubuko.com

时间: 2024-11-02 21:28:53

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

Android学习笔记-获取手机内存,SD卡存储空间。

前面介绍到如何保存数据到手机内存或者SD卡,但是问题是,在保存以前,我们还需要对他们的空间(可用空间),进行判断,才可以进行后续操作,所以,本节我们就介绍如何获取手机内存以及Sd卡的空间. //这时获取手机内存的 // File path = Environment.getDataDirectory(); //这时获取SD卡的空间 File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(pat

Android设备内存和SD卡操作工具类

package cc.c; import java.io.File; import java.util.List; import android.os.StatFs; import java.io.FileReader; import java.io.IOException; import java.io.BufferedReader; import android.os.Environment; import android.content.Context; import android.ap

Android—将Bitmap图片保存到SD卡目录下或者指定目录

直接上代码就不废话啦 一:保存到SD卡下 [java] view plain copy File file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".jpg"); try { out = new FileOutputStream(file); btImage.compress(Bitmap.CompressFormat.JPEG, 90, out); System

Android获取机身存储、内置SD卡与外置TF卡路径

获取机身存储路径(可以通过openFileInput,openFileOutput进行操作) String path=Environment.getDataDirectory().getAbsolutePath();返回/data 获取内置SD卡路径: public String getStorageDir(){ if(!(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))){ return "&quo

Android手机内存,SD卡读写

在手机上有两个存储位置 1 手机内部存储 2 SD卡 文件操作模式: 是否允许外部访问? 文件以覆盖/追加方式写? 手机内存读写 //保存文件到手机内存 public void save(String fileName,String content) throws IOException{ FileOutputStream fos = context.openFileOutput("a.txt", Context.MODE_PRIVATE); fos.write(content.get

安卓获取手机内存,SD卡内存使用状态的方法

内存状态获取类: public class MemoryUtils { public static final int TotalMemory = 0; public static final int AvailableMemory = 1; public static final int freeMemory = 2; public static String GetMemoryinfo(Context context,File pathFile,int MemoryType) { StatF

异步获取网络图片Bitmap

从网路获取图片,使用AsyncTask异步通信. 异步代码如下: public void addTask(String url) { new AsyncTask<String, Void, Bitmap>() { @Override protected Bitmap doInBackground(String... params) { // 后台通信 return decodeBitmap(params[0]); // return byteBitmap(params[0]); } @Over

Android性能优化:谈谈Bitmap的内存管理与优化

最近除了忙着项目开发上的事情,还有就是准备我的毕业论文,有一小段时间没写博客了,今晚难得想总结一下,刚好又有一点时间,于是凑合着来一篇,好了,唠叨话不多说,直接入正题.从事Android移动端的开发以来,想必是经常要与内存问题打交道的,说到Android开发中遇到的内存问题,像Bitmap这种吃内存的大户稍微处理不当就很容易造成OOM,当然,目前已经有很多知名的开源图片加载框架,例如:ImageLoader,Picasso等等,这些框架已经能够很好的解决了Bitmap造成的OOM问题,虽然这些框

关于手机的内置SD卡与外置SD卡

对于安卓2.3的系统来说,Environment.getExternalStorageDirectory()获取的目录是内置SD卡还是外置SD卡是无法保证的, 和手机厂商的修改有关,只能通过Environment.isExternalStorageRemovable()来判断,如果返回true就是外置的,因为外置的才能卸载.(但是我目前只遇到过安卓4.4系统才有内置SD卡,所以Environment.getExternalStorageDirectory()在2.3系统上当外置的用吧,遇到特殊机