【问题标题】:how to merge to two bitmap one over another如何将两个位图合并到另一个位图
【发布时间】:2012-05-16 10:35:54
【问题描述】:

我有两个图像,我想将一个位图图像完全保存在另一个位图图像存在的同一点上,我还使用手势移动图像。

public Bitmap combineImages(Bitmap ScaledBitmap, Bitmap bit) {

        int X = bit.getWidth();
        int Y = bit.getHeight();

        Scaled_X = ScaledBitmap.getWidth();
        scaled_Y = ScaledBitmap.getHeight();

        System.out.println("Combined Images");

        System.out.println("Bit :" + X + "/t" + Y);

        System.out.println("SCaled_Bitmap :" + Scaled_X + "\t" + scaled_Y);

        overlaybitmap = Bitmap.createBitmap(ScaledBitmap.getWidth(),
                ScaledBitmap.getHeight(), ScaledBitmap.getConfig());
        Canvas canvas = new Canvas(overlaybitmap);
        canvas.drawBitmap(ScaledBitmap, new Matrix(), null);
        canvas.drawBitmap(bit, new Matrix(), null);

        return overlaybitmap;
    }

任何帮助将不胜感激。

【问题讨论】:

标签: java android


【解决方案1】:

你可以像这样组合两个位图

public static Bitmap overlay(Bitmap bmp1, Bitmap bmp2) {
    Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
    Canvas canvas = new Canvas(bmOverlay);
    canvas.drawBitmap(bmp1, new Matrix(), null);
    canvas.drawBitmap(bmp2, 0, 0, null);
    bmp1.recycle();
    bmp2.recycle();
    return bmOverlay;
}

【讨论】:

  • 如果我想要一些填充以便两个图像都可见呢?
  • bmp1(500 , 500) 和 bmp2(400,400) 是的,我尝试了,但是 bmp1 显示了它们的实际大小,但是当我将 bmp2 缩小到(40,50)时,它会根据 bmp1 保存,我想保存我用手势把图像放在哪里.....
  • ok 最后我解决了我的问题 canvas.drawBitmap(bit, 画布参数, 画布参数, null);
  • 我正在尝试这个,但在“android.graphics.Canvas.throwIfRecycled(Canvas.java:1025)”处出现此错误
【解决方案2】:

您可以组合两个位图,即另一个位图上的位图作为叠加层
试试下面的代码:

 public Bitmap bitmapOverlayToCenter(Bitmap bitmap1, Bitmap overlayBitmap) {
        int bitmap1Width = bitmap1.getWidth();
        int bitmap1Height = bitmap1.getHeight();
        int bitmap2Width = overlayBitmap.getWidth();
        int bitmap2Height = overlayBitmap.getHeight();

        float marginLeft = (float) (bitmap1Width * 0.5 - bitmap2Width * 0.5);
        float marginTop = (float) (bitmap1Height * 0.5 - bitmap2Height * 0.5);

        Bitmap finalBitmap = Bitmap.createBitmap(bitmap1Width, bitmap1Height, bitmap1.getConfig());
        Canvas canvas = new Canvas(finalBitmap);
        canvas.drawBitmap(bitmap1, new Matrix(), null);
        canvas.drawBitmap(overlayBitmap, marginLeft, marginTop, null);
        return finalBitmap;
    }  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 2014-04-06
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多