Android 加载大图片

//当加载一张大图片的时候,会报内存溢出,所以我们必须把图片进行缩放
public class MainActivity extends Activity {
	private ImageView imageView;
	private int width;
	private int height;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		imageView = (ImageView) findViewById(R.id.imageView);

		// 获取手机屏幕的分辨率 宽高
		Display display = getWindowManager().getDefaultDisplay();
		// 得到屏幕的宽和高
		width = display.getWidth();
		height = display.getHeight();
		System.out.println("窗体的高度:" + height);
		System.out.println("窗体的宽度:" + width);

		Options options = new Options();
		// 设置解析器,不会真正的解析这个位图 而是解析这个图片的out输出信息(宽度,高度)
		options.inJustDecodeBounds = true;
		BitmapFactory.decodeFile("/sdcard/mm.jpg", options);
		int picHeight = options.outHeight;
		int picWidth = options.outWidth;

		System.out.println("图片的高度:" + picHeight);
		System.out.println("图片的高宽度:" + picWidth);

		int scaleX = picWidth / width;
		int scaleY = picHeight / height;

		System.out.println("水平缩放的比例:" + scaleX);
		System.out.println("垂直缩放的比例:" + scaleY);

		int scale = 1;
		// 判断水平缩放还是垂直缩放
		if (scaleX > scaleY && scaleY > 1) {
			// 水平缩放
			scale = scaleX;
		}
		if (scaleY > scaleX && scaleX > 1) {
			// 垂直缩放
			scale = scaleY;
		}

		// 在这里去真正解析这个问题
		options.inJustDecodeBounds = false;
		// 缩放的比例
		options.inSampleSize = scale;

		Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/mm.jpg", options);
		imageView.setImageBitmap(bitmap);
		;
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值