图片的本地存取(ROM)
2015-04-10 17:14
796 查看
公司里碰到个网络下载图片,保存到内存中,7天内从本地获取,7天后重新下载的要求,时间逻辑上SharePreference解决,写个图片的本地存取,留作备忘
一 首先是网络图片的加载
1,需要的权限注册
<uses-permission android:name="android.permission.INTERNET" />
2,使用的是HttpClient以Get的方式获取百度的logo图片。URL:https://www.baidu.com/img/bdlogo.png
public void getImageFromNet() {
new Thread() {
public void run() {
try {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet("https://www.baidu.com/img/bdlogo.png");
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
bit_net = BitmapFactory.decodeStream(is);
myHandler.sendEmptyMessage(0);
setImageToROM();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
};
}.start();
}
网络加载,放到异步线程中,加载完成后,提示Handler加载完成可以进行相关的UI操作。setImageToROM()是将下载的图片放到内存ROM中。
二 将图片放到ROM中
1,需要注册的权限
<uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
2,将Bitmap保存到 /date/date/YourPackageName/image/image_net.png 路径下,image为自己命名的文件夹,iamge_net.png为图片的文件名。
public void setImageToROM(){
try {
File imageDir = context.getDir("image", Context.MODE_PRIVATE);
String imagePath = imageDir.getAbsolutePath()+"image_net.png";
FileOutputStream out = new FileOutputStream(imagePath);
bit_net.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
使用getDir新建一个文件夹,两个参数一个文件夹名字,一个访问模式。
拼出文件的路径,使用FileOutputStream打开一个文件输出流用来保存文件到指定的路径,要记得关闭流。
compress为图片的压缩方法,三个参数,第一个format可指定文件的格式,第二个是文件的压缩质量,100表示原图片的100%,70表示原图的70%,最后一个是输出路径。
三 从ROM中读取图片
1,需要注册的权限
<uses-permission android:name="android.permission.READ_OWNER_DATA" />
2,从指定的路径中获得图片
public void getImageFromROM(){
File imageDir = context.getDir("image", Context.MODE_PRIVATE);
String imagePath = imageDir.getAbsolutePath()+"image_net.png";
bit_disk = BitmapFactory.decodeFile(imagePath);
myHandler.sendEmptyMessage(1);
}
就是BitmapFactory.decodeFile()方法,关键是拼出路径就好。
四 申明
进这行没多久,如果有错误希望大家指正,文件的读写还是不怎么理解,有什么好的例子告诉我,邮箱:zhufeng1222@qq.com,谢谢
五 项目的下载地址
http://download.csdn.net/detail/zhufeng1222/8582021
一 首先是网络图片的加载
1,需要的权限注册
<uses-permission android:name="android.permission.INTERNET" />
2,使用的是HttpClient以Get的方式获取百度的logo图片。URL:https://www.baidu.com/img/bdlogo.png
public void getImageFromNet() {
new Thread() {
public void run() {
try {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet("https://www.baidu.com/img/bdlogo.png");
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
bit_net = BitmapFactory.decodeStream(is);
myHandler.sendEmptyMessage(0);
setImageToROM();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
};
}.start();
}
网络加载,放到异步线程中,加载完成后,提示Handler加载完成可以进行相关的UI操作。setImageToROM()是将下载的图片放到内存ROM中。
二 将图片放到ROM中
1,需要注册的权限
<uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
2,将Bitmap保存到 /date/date/YourPackageName/image/image_net.png 路径下,image为自己命名的文件夹,iamge_net.png为图片的文件名。
public void setImageToROM(){
try {
File imageDir = context.getDir("image", Context.MODE_PRIVATE);
String imagePath = imageDir.getAbsolutePath()+"image_net.png";
FileOutputStream out = new FileOutputStream(imagePath);
bit_net.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
使用getDir新建一个文件夹,两个参数一个文件夹名字,一个访问模式。
拼出文件的路径,使用FileOutputStream打开一个文件输出流用来保存文件到指定的路径,要记得关闭流。
compress为图片的压缩方法,三个参数,第一个format可指定文件的格式,第二个是文件的压缩质量,100表示原图片的100%,70表示原图的70%,最后一个是输出路径。
三 从ROM中读取图片
1,需要注册的权限
<uses-permission android:name="android.permission.READ_OWNER_DATA" />
2,从指定的路径中获得图片
public void getImageFromROM(){
File imageDir = context.getDir("image", Context.MODE_PRIVATE);
String imagePath = imageDir.getAbsolutePath()+"image_net.png";
bit_disk = BitmapFactory.decodeFile(imagePath);
myHandler.sendEmptyMessage(1);
}
就是BitmapFactory.decodeFile()方法,关键是拼出路径就好。
四 申明
进这行没多久,如果有错误希望大家指正,文件的读写还是不怎么理解,有什么好的例子告诉我,邮箱:zhufeng1222@qq.com,谢谢
五 项目的下载地址
http://download.csdn.net/detail/zhufeng1222/8582021
相关文章推荐
- cocos2dx截取屏幕+本地存取+图片微博分享
- 使用C#向Sql Sever中存取网络图片和本地图片(二进制流的形式)
- 使用C#向Sql Sever中存取网络图片和本地图片(二进制流的形式)
- iOS 本地存取图片
- cocos2dx截取屏幕+本地存取+图片微博分享
- cocos2dx截取屏幕+本地存取+图片微博分享
- ASP.NET如何存取SQL Server数据库图片
- 图片自动保存到本地服务器
- vb.net 存取数据库中的图片
- 对Oralce数据库存取图片的几种方法
- ASPX保存远程图片到本地的两种方法的函数
- 数据库中存取图片
- ASP.NET如何存取SQL Server数据库图片
- Delphi存取图片,
- 用asp自动解析网页中的图片地址,并将其保存到本地服务器
- 在VB中存取数据库中的图片
- 将控件中的数据输出保存到本地excel或word中,同时保存图片到本地(c#)
- MIDlet中对图片等资源文件的存取
- 将控件中的数据输出保存到本地excel或word中,同时保存图片到本地(c#)
- 把文章内容中涉及到的图片自动保存到本地服务器