gpt4 book ai didi

android - 如何在创建位图之前从 InputStream 知道位图大小?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:05:50 25 4
gpt4 key购买 nike

我需要在创建图片之前对其进行缩放,并且我只想在它超过 1024KB(例如)时执行此操作。

通过执行以下操作,我可以缩放图像,但我只需要缩放大于给定尺寸的图像。

Bitmap bmImg = null;
InputStream is = url.openStream();
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 10;
bmImg = BitmapFactory.decodeStream(is,null,opts);

如何获取位图的大小? (我很高兴知道字节数,而不是解压后的大小)。

编辑:

我正在尝试这个:

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(是)通过“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();

关于android - 如何在创建位图之前从 InputStream 知道位图大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4634172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com