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 ...
随机推荐
- 在FPS游戏中,玩家对音画同步感知的量化与评估
前言 在游戏测试中,音画同步测试是个难点(所谓游戏音画同步:游戏中,音效与画面的同步程度),现在一般采用人工主观判断的方式测试,但这会带来2个问题: 无法准确量化,针对同一场景的多次测试结果可能会相反 ...
- C# “从元数据”
所谓元数据.其实是指由微软所封装的类..这些类你可以查看.但是无法修改. 元数据是一种二进制信息,用以对存储在公共语言运行库可移植可执行文件 (PE) 文件或存储在内存中的程序进行描述.将您的代码编译 ...
- 洛谷P1003 铺地毯 noip2011提高组day1T1
洛谷P1003 铺地毯 noip2011提高组day1T1 洛谷原题 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n ...
- Java学习笔记之---单例模型
Java学习笔记之---单例模型 单例模型分为:饿汉式,懒汉式 (一)要点 1.某个类只能有一个实例 2.必须自行创建实例 3.必须自行向整个系统提供这个实例 (二)实现 1.只提供私有的构造方法 2 ...
- 如何在vue中监听scroll,从而实现滑动加载更多
首先需要明确3个定义: 文档高度:整个页面的高度 可视窗口高度:你看到的浏览器可视屏幕高度 滚动条滚动高度: 滚动条下滑过的高度 当 文档高度 = 可视窗口高度 + 滚动条高度 时,滚动条正好到底. ...
- Java读写二进制数据
import java.io.*; import java.time.LocalDate; public class Test { public static void main(String[] a ...
- Java编程思想:内部类中级部分
public class Test { public static void main(String[] args) { // Parcel4Test.test(); // Parcel5_1.tes ...
- python菜鸟基础知识(一)
第三章 基础 3.1程控制语句 3.1.1if语句 1.单if if 关键字 空格 条件 冒号 缩进 结果 print(1) if 3 > 2: print(9) print(8) 2 ...
- 【CYH-02】noip2018数论模拟赛:比赛通知栏
鉴于公开赛有时可能无法更改比赛描述呢... 所以我们准备在这里(和团队宣言里)发布一些比赛公告. 请及时关注
- 2017day2
系统模块: # Author: sonny# -*- coding:utf-8 -*-import sys; #print(sys.path);print(sys.argv);print(sys.ar ...