当前位置: 首页 > 知识库问答 >
问题:

Android画布试图绘制太大的异常

邴兴为
2023-03-14

共有1个答案

蒙华翰
2023-03-14

在执行任何操作之前,请尝试压缩您选择的图像。

这是压缩等宽高比图像的代码。

我已将Uri转换为位图

bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);
resizeBitmap = resize(bitmap, bitmap.getWidth() / 2, bitmap.getHeight() / 2);
private static Bitmap resize(Bitmap image, int maxWidth, int maxHeight) {
    if (maxHeight > 0 && maxWidth > 0) {
        int width = image.getWidth();
        int height = image.getHeight();
        float ratioBitmap = (float) width / (float) height;
        float ratioMax = (float) maxWidth / (float) maxHeight;

        int finalWidth = maxWidth;
        int finalHeight = maxHeight;
        if (ratioMax > ratioBitmap) {
            finalWidth = (int) ((float) maxHeight * ratioBitmap);
        } else {
            finalHeight = (int) ((float) maxWidth / ratioBitmap);
        }
        image = Bitmap.createScaledBitmap(image, finalWidth, finalHeight, true);
        return image;
    } else {
        return image;
    }
}
 类似资料:
  • 我正在运行Ubuntu 16.04。在Android Studio上,当我试图在模拟器中运行我的应用程序时,我得到以下错误: 致命的例外:主要过程:项目名称在这里,PID: 2528java.lang.运行时间例外:画布:试图绘制太大(216090000bytes)位图。在android.view.DisplayListCanvas.throw如果不能绘制(DisplayListCanvas.ja

  • 当我在logcat中查找时,我看到以下消息: 在我的第一个活动中,我将这个问题追溯到一个ImageView,它显示了一个漂亮的大背景图像。问题中的图像是2048x1066,并且在我的通用目录中,因此无论密度如何,都将使用此图像。 当设置为时,一切正常。但是当我进入时,它就会停止工作。如果我然后用一个较小的映像交换出来,它会在下工作,但是如果我上升到下,它会再次停止工作。 我的猜测是,调整会使您的设

  • 我有一个发布的应用程序在Android N上启动时崩溃,因为新引入的

  • 我试图使用矩阵旋转位图。然后我试着把它画在画布上。但它就这么消失了! 下面是我的代码: } 我已经删除了缩放画布和事件监听器等的函数。使代码小而易读。 我周期性地调用setDirection方法,但是在它被调用之后,“userImage”drawable就消失了。有人能告诉我这里出了什么问题吗。。 谢谢

  • 如何获取我手指的触摸事件和运动事件然后绘制?

  • 我目前正在使用画布开发一个JavaFX-Drawing-Application。在GraphicsContext的帮助下,我使用beginPath()和lineTo()方法绘制线条,但我无法找到实现橡皮擦的适当方法。