标签:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView imageView = (ImageView) findViewById(R.id.iv); String filePath = Environment .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) .getAbsolutePath() + File.separator + "map.bmp"; Bitmap bitmap = BitmapUtils.getBitmap(filePath, 400, 400); // Bitmap bitmap = BitmapFactory.decodeFile(filePath); imageView.setImageBitmap(bitmap); } }
public class BitmapUtils { /** * @param filePath 文件的绝对路径 * @param destWidth 控件的宽 * @param destHeight 控件的高 * @return */ public static Bitmap getBitmap(String filePath, int destWidth, int destHeight) { /**********************************第一次采样**************************************/ //加载图片时的选项 BitmapFactory.Options options = new BitmapFactory.Options(); //是否只加载图片的边框 options.inJustDecodeBounds = true; //加载图片,此时的加载只能够获取到图片的边框 BitmapFactory.decodeFile(filePath, options); //获取原图的宽度 int outWidth = options.outWidth; //获取原图的高度 int outHeight = options.outHeight; Log.d("lenve", "getBitmap: outWidth:" + outWidth + ";outHeight:" + outHeight); //缩放比例 int sampleSize = 1; //计算缩放比例,sampleSize必须是2的n次幂 while (outWidth / sampleSize > destWidth || outHeight / sampleSize > destHeight) { sampleSize *= 2; } Log.d("lenve", "getBitmap: sampleSize:" + sampleSize); /*********************************第一次采样结束,第二次采样开始*****************************************/ //不仅仅只加载图像的边框,也加载图像中的像素点 options.inJustDecodeBounds = false; //设置缩放比例 options.inSampleSize = sampleSize; //ARGB_8888,表示一个像素点的透明度以及三原色各占8位,共计32位,即4个字节 //ALPHA_8,表示一个像素点只有透明度,没有三原色,此时,一个像素点占8位,即1个字节 //ARGB_4444,表示一个像素点的透明度以及三原色各占4位,共计16位,即2个字节 //RGB_565,这种色彩模式不能表示透明度,红绿蓝三色各占5、6、6位,共计16位,即2个字节 //设置图像的色彩模式,共有4种取值 options.inPreferredConfig = Bitmap.Config.ARGB_8888; //加载bitmap并返回 return BitmapFactory.decodeFile(filePath, options); } }
标签:
原文地址:http://www.cnblogs.com/anni-qianqian/p/5435153.html