imageloader+图片压缩
public class MainActivity extends AppCompatActivity { private ImageView ivIcon; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //找控件
ivIcon = (ImageView) findViewById(R.id.ivIcon); } public void btnImageResizer(View view){ //loadImage("http://tnfs.tngou.net/image/info/150822/d35a601b668c160a07c43d4925af9007.jpg");
loadImage2("http://tnfs.tngou.net/image/info/150822/d35a601b668c160a07c43d4925af9007.jpg"); } private void loadImage(String url){ new AsyncTask<String,Void,Bitmap>(){ @Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
//主线程
if(bitmap != null){
ivIcon.setImageBitmap(bitmap);
}else{
ivIcon.setBackgroundResource(R.mipmap.ic_launcher_round);
} } @Override
protected Bitmap doInBackground(String... params) { //子线程运行,可以执行耗时操作吧
try {
String path = params[0];
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000); //等待服务器响应
int code = connection.getResponseCode(); if(code == 200){ InputStream is = connection.getInputStream(); BitmapFactory.Options options = new BitmapFactory.Options();
//首先不要对图片进行真正解析,只需要假解析(只需要得到图片的宽高)
//inJustDecodeBounds = true BitmapFactory不会去真正解析这张图片的数据
//只会解析这张图片的宽高
options.inJustDecodeBounds = true;
//options 多个选项
BitmapFactory.decodeStream(is,null,options); //得到图片宽高
int width = options.outWidth;
int height = options.outHeight; //System.out.println("宽 : "+width+" 高 : "+height); //定义变量记住采样率信息
int inSampleSize = 1;//1 默认不对图片进行任何的压缩 if(width > 100 || height > 100){ int halfWidth = width / 2;//640 / 2 = 320
int halfHeight = height / 2; //计算采样率
while ((halfWidth / inSampleSize) >= 100 && (halfHeight / inSampleSize) >= 100){ inSampleSize *= 2; }
}
//真正解析图片
options.inSampleSize = inSampleSize;
//inJustDecodeBounds = false 图片工厂会去对图片真正解析
options.inJustDecodeBounds = false;
//转换不出来图片的原因是系统方法Bug
//避免这个bug好的方法:将之前获取的图片流关闭
is.close();
//通过url对象重新得到图片流
is = url.openStream();
Bitmap bitmap = BitmapFactory.decodeStream(is,null,options);
//Bitmap bitmap = BitmapFactory.decodeStream(is);
is.close();
return bitmap; } } catch (Exception e) {
e.printStackTrace();
} return null;
}
}.execute(url);
}
imageloader+图片压缩的更多相关文章
- Golang 编写的图片压缩程序,质量、尺寸压缩,批量、单张压缩
目录: 前序 效果图 简介 全部代码 前序: 接触 golang 不久,一直是边学边做,边总结,深深感到这门语言的魅力,等下要跟大家分享是最近项目 服务端 用到的图片压缩程序,我单独分离了出来,做成了 ...
- 三款不错的图片压缩上传插件(webuploader+localResizeIMG4+LUploader)
涉及到网页图片的交互,少不了图片的压缩上传,相关的插件有很多,相信大家都有用过,这里我就推荐三款,至于好处就仁者见仁喽: 1.名气最高的WebUploader,由Baidu FEX 团队开发,以H5为 ...
- 前端构建工具之gulp(一)「图片压缩」
前端构建工具之gulp(一)「图片压缩」 已经很久没有写过博客了,现下终于事情少了,开始写博吧 今天网站要做一些优化:图片压缩,资源合并等 以前一直使用百度的FIS工具,但是FIS还没有提供图片压缩的 ...
- gulp图片压缩
gulp图片压缩 网页性能优化,通常要处理图片,尤其图片量大的时候,更需要工具来批量处理,这里使用gulp,做个简单总结 image-resize压缩尺寸 var gulp = require('gu ...
- Android 图片压缩、照片选择、裁剪,上传、一整套图片解决方案
1.Android一整套图片解决方案 http://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650820998&idx=1& ...
- Java中图片压缩处理
原文http://cuisuqiang.iteye.com/blog/2045855 整理文档,搜刮出一个Java做图片压缩的代码,稍微整理精简一下做下分享. 首先,要压缩的图片格式不能说动态图片,你 ...
- android 图片压缩
引用:http://104zz.iteye.com/blog/1694762 第一:我们先看下质量压缩方法: private Bitmap compressImage(Bitmap image) { ...
- HTML5 CANVAS 实现图片压缩和裁切
原文地址:http://leonshi.com/2015/10/31/html5-canvas-image-compress-crop/?utm_source=tuicool&utm_medi ...
- C# 图片压缩
/// <summary> /// 图片压缩方法 /// </summary> /// <param name="sF ...
随机推荐
- django基础知识之HttpReqeust对象:
HttpReqeust对象 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象 视图函数的第一个参数是HttpRequest对象 在django.http模块中定义了HttpR ...
- 1. 全文搜索框架 Haystack
1.什么是Haystack Haystack是django的开源全文搜索框架(全文检索不同于特定字段的模糊查询,使用全文检索的效率更高 ),该框架支持Solr,Elasticsearch,Whoosh ...
- CDQZ集训DAY0 日记
貌似没发生什么事…… 按照教练员的交代,写一下流水账…… 早上5:30到了机场,然后就默默地坐着飞机到了成都.然后就按预定好的被GXY的父亲的朋友接机(貌似因为觉得GXY和他爸的同学挺像被批判一番). ...
- NET Core CSharp初级篇 1-3面向对象
.NET Core CSharp初级篇 1-3 本节内容为面向对象初级教程 类 简介 面向对象是整个C#中最核心最有特色的一个模块了,它很好的诠释了程序与现实世界的联系. 面向对象的三大特征:继承.多 ...
- Android 异常 UncaughtException detected: java.lang.RuntimeException: Parcelable encountered IOExcepti
异常信息: UncaughtException detected: java.lang.RuntimeException: Parcelable encountered IOException wri ...
- python常见模块-collections-time-datetime-random-os-sys-序列化反序列化模块(json-pickle)-subprocess-03
collections模块-数据类型扩展模块 ''' 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque ...
- 简单分析ThreadPoolExecutor回收工作线程的原理
最近阅读了JDK线程池ThreadPoolExecutor的源码,对线程池执行任务的流程有了大体了解,实际上这个流程也十分通俗易懂,就不再赘述了,别人写的比我好多了. 不过,我倒是对线程池是如何回收工 ...
- SpringBoot2.1.6 + Shiro1.4.1 + Thymeleaf + Jpa整合练习
首先,添加maven依赖,完整的pom文件如下: <?xml version="1.0" encoding="UTF-8"?> <projec ...
- Python_Day1_人人都爱列表
列表由一系列按特定顺序排列的元素组成.你可以创建包含字母表中所有字母.数字0~9或 所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系. 鉴于列表通常包含多个元素,给列 ...
- golang在多个go routine中进行map或者slice操作应该注意的对象。
因为golang的map和列表切片都是引用类型,且非线程安全的,所以在多个go routine中进行读写操作的时候,会产生“map read and map write“的panic错误. 某一些类型 ...