public class ImgUtils {
private static ImgUtils imgUtils = null ;
private ImgUtils(){}
public static ImgUtils getImgUtils() {
if (imgUtils == null){
imgUtils = new ImgUtils();
}
return imgUtils;
}
private Handler handler = new Handler();
public void loadImg(String img , ImageView imgview){
String name = img.substring(img.lastIndexOf("/") + 1);
File file = new File(Environment.getExternalStorageDirectory() + "/" + name);
if (file.exists()){
Bitmap bitmap = douImg(file);
imgview.setImageBitmap(bitmap);
}else{
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL(img);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setReadTimeout(5000);
con.setConnectTimeout(5000);
if (con.getResponseCode() == 200) {
InputStream is = con.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
Bitmap b = BitmapFactory.decodeStream(bis);
is.close();bis.close();con.disconnect();
b.compress(Bitmap.CompressFormat.JPEG,100,new FileOutputStream(file));
handler.post(new Runnable() {
@Override
public void run() {
imgview.setImageBitmap(douImg(file));
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
//TODO 图片的二次采样
private Bitmap douImg(File file) {
BitmapFactory.Options op = new BitmapFactory.Options();
op.inSampleSize = 4 ;
Bitmap.Config fig = Bitmap.Config.RGB_565;
Bitmap b = BitmapFactory.decodeFile(file.getAbsolutePath(), op);
return b ;
}
}
图片二次采样
最新推荐文章于 2022-09-14 10:25:34 发布
本文介绍了一个用于Android平台的图片加载与缓存工具类ImgUtils。该工具类能够从网络下载图片并进行本地缓存,同时支持图片的二次采样以减少内存消耗。在图片不存在于本地缓存时,它会在后台线程中下载图片,并将其保存到SD卡。
1172

被折叠的 条评论
为什么被折叠?



