二次采样

来源:互联网 发布:c 数组类型转换 编辑:程序博客网 时间:2024/04/29 16:35
package com.example.a06_erci_demo;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = (ImageView) findViewById(R.id.image_view);
    }

    public void erCi(View view){
        /*Uri parse = Uri.parse(Environment.getExternalStorageDirectory() + "/aaa.jpg");
        imageView.setImageURI(parse);*/    

        Bitmap bitmap = getBitmap(Environment.getExternalStorageDirectory() + "/aaa.jpg", 320, 480);
        imageView.setImageBitmap(bitmap);
    }

    /**
     * 二次采样 返回bitmap
     * @param path
     * @param width
     * @param height
     * @return
     */
    private Bitmap getBitmap(String path,int width,int height){

        BitmapFactory.Options options = new BitmapFactory.Options();

        //设置只加载边框
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(path,options);

        //拿到边框的宽高
        int outWidth = options.outWidth;
        int outHeight = options.outHeight;

        //计算缩放的比例
        int scaleX = outWidth/width;
        int scaleY = outHeight/height;

        //初始化压缩比例
        int sampleSize = 1;
        if (scaleX>scaleY && scaleY>1){
            sampleSize = scaleX;
        }else if (scaleY>scaleX && scaleX>1){
            sampleSize = scaleY;
        }

        //第二次,,,根据比例进行压缩,并且压缩图片的质量
        options.inJustDecodeBounds = false;
        //设置压缩的比例
        options.inSampleSize = sampleSize;
        //设置图片的质量...Bitmap.Config.RGB_565一个像素点在内存中占有2个字节...Bitmap.Config.ARGB_8888占有四个字节
        options.inPreferredConfig = Bitmap.Config.RGB_565;

        //以指定的选项解码图片,,,返回
        return BitmapFactory.decodeFile(path,options);
    }
}

原创粉丝点击