您的位置:首页 > 其它

图片的二次采样

2017-04-01 14:02 197 查看
package fengras.com.bitmaputils;
import android.annotation.TargetApi;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
private static String str="/mnt/sdcard/c.jpg";
private static ImageView im;

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
im = (ImageView) findViewById(R.id.im);

// Bitmap bitmap = BitmapFactory.decodeFile(str);
//im.setImageBitmap(bitmap);
getbitmap( im.getMaxWidth(),im.getMaxHeight());

}
public static Bitmap getbitmap( int destwidth, int desHeight) {
//第一次采样
BitmapFactory.Options   options=new BitmapFactory.Options();
//该属性设置为true时是只把图片的边框加载进来
options.inJustDecodeBounds=true;
//第一次只加载图片边框  不加载图片的像素
BitmapFactory.decodeFile(str,options);
//获得原图的宽和高
int outwidth=options.outWidth;
int outheight=options.outHeight;
//定义缩放比例
int sampleSize=1;
while(outwidth/sampleSize>desHeight||outheight/sampleSize>destwidth){
sampleSize*=2;
//如果宽高的任意一方的缩放比例没有达到要求,都继续增大缩放比例
//sampleSize应该为2的n次幂,如果给sampleSize设置的数字不是2的n次幂,那么系统会就近取值
}
//二次采样开始
options.inJustDecodeBounds=false;
//设置缩放比例
options.inSampleSize=sampleSize;
options.inPreferredConfig=Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(str,options);
im.setImageBitmap(bitmap);
return  null;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: