我需要在创建图像之前对其进行缩放,并且仅当图像超过 1024KB(例如)时才进行缩放。
通过执行以下操作,我可以缩放图像,但我只需要缩放大于给定尺寸的图像。
Bitmap bmImg = null;
InputStream is = url.openStream();
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 10;
bmImg = BitmapFactory.decodeStream(is,null,opts);
如何获取位图的大小? (我很高兴知道字节数,而不是解压后的大小)。
Edit:
我正在尝试这个:
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
Bitmap bmImg=BitmapFactory.decodeStream(is,null,opts);
Log.e("optwidth",opts.outWidth+"");
Bitmap bmImg1 = BitmapFactory.decodeStream(is);
我第一次使用 InputStream (is) 用“inJustDecodeBounds”对其进行解码工作正常,我可以获得位图尺寸。
问题是,当我第二次使用它来实际解码图像时,没有显示图像。
我究竟做错了什么?
我是菜鸟,所以我不能直接评论 Monkjack 的答案。他的回答如此缓慢的原因是它一次复制一个字节。即使使用 1K 的缓冲区也会显着提高性能。
InputStream in = getContentResolver().openInputStream(docUri);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int i;
byte[] buffer = new byte[1024];
while ((i = in.read(buffer)) != -1) {
bos.write(buffer);
}
byte[] docbuffer = bos.toByteArray();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)