图片压缩无bug版
来源:互联网 发布:知乎童谣事件始末 编辑:程序博客网 时间:2024/05/01 12:20
package com.example.imageresizer;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import com.example.imageresizer.utils.ImageResizer;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
private ImageView ivIcon;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ivIcon = (ImageView) findViewById(R.id.ivIcon);}public void btnLoadImge(View v){ loadImage("http://20.1.4.181:8080/beautiful.jpg",100,100);}/** * 加载图片,并压缩 * @param imgPath * @param requestWidth * @param requestHeight */public void loadImage(String imgPath, final int requestWidth, final int requestHeight){ new AsyncTask<String,Void,Bitmap>(){ @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); if(bitmap != null){ ivIcon.setImageBitmap(bitmap); } } @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); connection.setDoInput(true); connection.setDoOutput(true); int code = connection.getResponseCode(); if(code == 200){ //得到图片流 InputStream is = connection.getInputStream(); //解析图片 BitmapFactory.Options options = new BitmapFactory.Options(); //让图片暂时不去解析 只需要获取图片的宽高 options.inJustDecodeBounds = true; //解析一下图片,这个时候,只会解析图片的宽*高 BitmapFactory.decodeStream(is,null,options); //计算采样率 options.inSampleSize = ImageResizer.calculateInSampleSize(options,requestWidth,requestHeight); //我这时候需要真正去解析图片 options.inJustDecodeBounds = false; //关闭流 is.close(); //得到图片的输入流 is = url.openStream(); //解析图片的时候,才会去真正解析 Bitmap bitmap = BitmapFactory.decodeStream(is,null,options); //关闭流 is.close(); return bitmap; } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute(imgPath);}
}
计算采样率的工具类
package com.example.imageresizer.utils;
import android.graphics.BitmapFactory;
public class ImageResizer {
/** * 计算采样率 * @param options * @param requestWidth * @param requestHeight * @return */public static int calculateInSampleSize(BitmapFactory.Options options,int requestWidth,int requestHeight){ //获取图片的真实的宽高 int width = options.outWidth; int height = options.outHeight; int inSampleSize = 1; options.inSampleSize = inSampleSize;//默认 1 1代表不对图片进行任何压缩 //计算采样率 if(width > requestWidth || height > requestHeight){ int halfWidth = width / 2; int halfHeight = height / 2; while((halfWidth / inSampleSize) >= requestWidth && (halfHeight / inSampleSize) >= requestHeight){ //计算采样率 inSampleSize *= 2; } } return inSampleSize;}
}
0 0
- 图片压缩无bug版
- 压缩图片无bug版
- 图片压缩无Bug版
- 无bug,图片上传
- 记一次图片压缩过程的BUG处理
- android 获取照相机返回的图片,无压缩
- localResizeIMG先压缩后ajax无刷新上传图片
- Android图片压缩终极版
- 无语的bug
- 无头绪bug
- 无bug注释
- 永无bug
- 图片压缩。大小压缩
- 图片压缩按比例压缩
- 压缩图片
- 压缩图片
- 图片压缩
- 图片压缩
- Deep Learning-TensorFlow (14) CNN卷积神经网络_深度残差网络 ResNet
- 深入理解String与StringBuilder
- POJ 1721 CARDS (置换群)
- Sparksql语法,读json
- Corn Fields 状压DP
- 图片压缩无bug版
- #if ... #endif
- 如何弄清二叉树前序中序后序遍历的顺序
- 听译letters live
- QM关于Repeater的使用
- 访问localhost时You don't have permission to access / on this server.
- 基于 Facebook Redex 实现 Android APK 的压缩和优化
- windows libevent使用 客户端+服务端
- Notes on tensorflow(六)variable_scope