图片的二次采样

    xiaoxiao2021-03-25  40

    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; } }
    转载请注明原文地址: https://ju.6miu.com/read-150061.html

    最新回复(0)