1

我正在尝试合并 2 个图像,一个是来自相机的位图,第二个是存储在 drawables 中的 .png 文件。我所做的是我将这两个图像用作位图,并尝试使用画布将它们合并,如下所示:

Bitmap topImage = BitmapFactory.decodeFile("gui.png");
Bitmap bottomImage = BitmapFactory.decodeByteArray(arg0, 0, arg0.length);

Canvas canvas = new Canvas(bottomImage);
canvas.drawBitmap(topImage, 0, 0, null);

但我一直收到“位图大小超过 VM 预算”错误。我几乎尝试了所有方法,但它仍然不断抛出此错误。还有另一种合并2张图片的方法吗?我需要做的很简单 - 我需要拍照并将其与存储在可绘制对象中的 .PNG 图像合并保存。例如,这个应用程序非常接近我的需要 - https://play.google.com/store/apps/details?id=com.hl2.hud&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5obDIuaHVkIl0

谢谢 :)

4

2 回答 2

4

请参阅下面的代码以组合两个图像。此方法返回组合位图

public Bitmap combineImages(Bitmap frame, Bitmap image) {
        Bitmap cs = null;
        Bitmap rs = null;

        rs = Bitmap.createScaledBitmap(frame, image.getWidth() + 50,
                image.getHeight() + 50, true);

        cs = Bitmap.createBitmap(rs.getWidth(), rs.getHeight(),
                Bitmap.Config.RGB_565);

        Canvas comboImage = new Canvas(cs);

        comboImage.drawBitmap(image, 25, 25, null);
        comboImage.drawBitmap(rs, 0, 0, null);
        if (rs != null) {
            rs.recycle();
            rs = null;
        }
        Runtime.getRuntime().gc();
        return cs;
    }

您可以根据您的要求更改高度和宽度希望这会有所帮助......

于 2013-02-04T15:02:58.873 回答
0

图片有多大?我只在尝试将大图像加载到内存时遇到了这个问题。

您解码的字节数组实际上是图像吗?

通过快速查看 android 文档,您可以使用可能在这种情况下工作的默认相机应用程序捕获图像。

http://developer.android.com/training/camera/photobasics.html

另请参阅此问题:从相机捕获图像并在活动中显示

编辑:如果图像非常大,您可能还需要缩小相机中的图像。有关详细信息,请参阅我链接到的 android 页面的末尾。

于 2013-02-02T14:27:41.903 回答