图片的二次采样

package com.example.ggq.scalecompressbitmapstudy;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.widget.ImageView;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;

public class MainActivity extends AppCompatActivity {

    private ImageView image_view;
    private static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        image_view = findViewById(R.id.image_view);
        //创建Options
        BitmapFactory.Options options = new BitmapFactory.Options();
        //只加载宽高,不加载内容
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile("/storage/emulated/0/Pictures/Screenshots/picture.jpg",options);
        //获取图片的宽高
        int outWidth = options.outWidth;
        int outHeight = options.outHeight;
        //获取手机屏幕的宽高
        Display display = getWindow().getWindowManager().getDefaultDisplay();
        int width = display.getWidth();
        int height = display.getHeight();
        //定义一个默认的比率
        int scale = 0;
        int scaleX = outWidth/width;
        int scaleY = outHeight/height;
        scale = scaleX>scaleY?scaleX:scaleY;
        options.inSampleSize=scale;
        options.inJustDecodeBounds = false;
        //-1ac747aba7b58c8c.jpg
        Bitmap bitmap = BitmapFactory.decodeFile("/storage/emulated/0/Pictures/Screenshots/picture.jpg",options);
        int size = getBitmapSize(bitmap);
        Log.d(TAG, "onCreate: "+size);
        image_view.setImageBitmap(bitmap);
    }
    /**
     * 计算图片的大小(1596440B)
     * @param bitmap
     * @return
     */
    public int getBitmapSize(Bitmap bitmap){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){     //API 19
            return bitmap.getAllocationByteCount();
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1){//API 12
            return bitmap.getByteCount();
        } else {
            return bitmap.getRowBytes() * bitmap.getHeight(); //earlier version
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42470335/article/details/81001141