1

私は2つの画像をマージしようとしています。1つはカメラからのビットマップで、2つ目はドローアブルに保存された.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

2 つの画像を結合するには、次のコードを参照してください。このメソッドは結合されたビットマップを返します

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 に答える