繁体   English   中英

将图像转换为位图并压缩

[英]Convert image to bitmap and compress

我有一个将图像转换为数组字节的功能(将图像保存到数据库sqlite)。 我有一个问题,如何压缩图像并避免出现内存不足错误? 这是我的代码,谢谢。

public byte[] ConverttoArrayByte(ImageView img)
{
    try{
        BitmapDrawable bitmapDrawable = (BitmapDrawable) img.getDrawable();
        Bitmap bitmap = bitmapDrawable.getBitmap();
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
        return stream.toByteArray();
    }catch (NullPointerException e){
        Log.d("Tag", "Null");
       e.printStackTrace();
    }
   return null;
}

您可以尝试使用调整图像大小的小功能:

public static Bitmap getResizedBitmap(Bitmap image, int maxSize) {
        int width = image.getWidth();
        int height = image.getHeight();

        float bitmapRatio = (float)width / (float) height;
        if (bitmapRatio > 1) {
            width = maxSize;
            height = (int) (width / bitmapRatio);
        } else {
            height = maxSize;
            width = (int) (height * bitmapRatio);
        }
        return Bitmap.createScaledBitmap(image, width, height, true);
    }

并以这种方式调用此函数Bitmap bitmap = GetAttachmentsUtils.getResizedBitmap(bitmap, maxSize); 获得调整大小的位图。

然后,您可以使用bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);对其进行压缩bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 并执行与之前相同的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM