0

写真を撮ってビットマップ(bitmap)を取得します。写真を撮ると、一番上に残したい画像(bitmao2)があります。そのため、画像を含む画像を保存するには、キャンバスを使用します。写真を撮ったときの位置とまったく同じように、ビットマップに bitmap2 を配置したいと思います。これが私がすることです

    Bitmap bitmap = BitmapFactory.decodeByteArray(data,0,data.length);
    int width=bitmap.getWidth();
    int height=bitmap.getHeight();
    Bitmap bitmap2 = GameActivity.decodeSampledBitmapFromResource(gameactivity.getResources(), R.drawable.fire16,width1 );
    Matrix matrix = new Matrix();
    matrix.postRotate(90);
    bitmap=Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true);  

    ImageView image = (ImageView) gameactivity.findViewById(R.id.imageView4);
    LayoutParams layout = (LayoutParams) image.getLayoutParams();
    int margin = layout.topMargin;
    Bitmap cs = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444); 
    Canvas canvas = new Canvas(cs);
    canvas.drawBitmap(bitmap, 0f, 0f, null);
    canvas.drawBitmap(bitmap2,0,margin, null);

(縦向きで撮っても横向きなので画像を回転させているので修正)

問題は、ディメンション Canvas = ビットマップのディメンションであっても、コードが実行された後に画像全体が表示されず、少しトリミングされており、もちろん bitmap2 が本来あるべき場所にないことです。多分私は代わりに画面の寸法を取るべきですか??

4

1 に答える 1

1

ビットマップの描画には、drawBitmap(ビットマップビットマップ、Rect src、Rect dst、ペイントペイント)を使用できます。

Rect src = new Rect(0, 0, bitmap2.getWidth(), bitmap2.getHeight());
Rect dst = new Rect(0, 0, width, height);
canvas.drawBitmap(bitmap2, src, dst, null);

また、画像を回転させると、幅と高さがここで入れ替わります。

bitmap=Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true); 
于 2013-02-25T10:08:05.393 に答える