Android - 在BitmapFactory.decodeStream返回图像之前调整图像大小

3

我需要在从BitmapFactory.decodeStream(imagestream)返回图像之前,调整/缩小我从画廊中选择的图像。当我选择过大的图像时,它会抛出OutOfMemory Exception。如何在decodeStream返回图像之前调整图像大小?

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == IMAGE_PICKER_SELECT
                && resultCode == Activity.RESULT_OK) {
            Uri selectedImage = data.getData();
            InputStream imageStream = null;
            try {
                imageStream = getContentResolver().openInputStream(
                        selectedImage);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            Bitmap bitmap = BitmapFactory.decodeStream(imageStream);
            imgV.setImageBitmap(bitmap);
            // sb = bitmap;
            // imgSelected = true;
            selectedImage = null;
            imageStream = null;
            bitmap = null;
        }
    }

请参考这个SO问题 - Sash_KP
@Sash_KP:你提供的链接与位图有关,但 OP 在解码位图时遇到了问题,这就是他想要调整大小的原因。他想使用imagestream在返回之前调整图像大小。 - Sagar Pilkhwal
1个回答

3

试着这样做

BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize=2; //decrease decoded image 
Bitmap bitmap=BitmapFactory.decodeStream(is, null, options); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fos);

在压缩中,fos是什么?它是否必需? - ninjaxelite
@user3245899 fos 是一个文件输出流。 - Nadir Belhaj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接