二次採樣

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

public class MainActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView iv = (ImageView) findViewById(R.id.iv);
        //得到Options選項
        BitmapFactory.Options options = new BitmapFactory.Options();
        //找到sd卡上的圖片
        String s = Environment.getExternalStorageDirectory().getPath() + "/b3.jpg";

        //二次採樣的第一步
        /**
         * options.inJustDecodeBounds = true 設置爲true只加載圖片的寬高,不加載內容
         */
        options.inJustDecodeBounds = true;
        //加載圖片寬高 邊界
        BitmapFactory.decodeFile(s, 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.inJustDecodeBounds = false;
        options.inSampleSize = scale;

        Bitmap bitmap = BitmapFactory.decodeFile(s, options);
        //  Bitmap bitmap = BitmapFactory.decodeFile(path);
        iv.setImageBitmap(bitmap);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章