Android中的叠加图像

Posted

技术标签:

【中文标题】Android中的叠加图像【英文标题】:Overlay images in Android 【发布时间】:2011-07-25 15:03:12 【问题描述】:

我有两张图片想要合并为一张。 (例如,“street.png”顶部的“House.png”)

我如何在 android 中实现这一点?我只想合并图像并将它们导出到文件中。

This example 将图像设置为 ImageView 但我希望将其导出。 This other example 在 Android 中不起作用,因为这些类不可用。

【问题讨论】:

【参考方案1】:

我会尝试类似:

public static Bitmap mergeImages(Bitmap bottomImage, Bitmap topImage) 
    final Bitmap output = Bitmap.createBitmap(bottomImage.getWidth(), bottomImage
            .getHeight(), Config.ARGB_8888);
    final Canvas canvas = new Canvas(output);
    final Paint paint = new Paint();
    paint.setAntiAlias(true);

    canvas.drawBitmap(bottomImage, 0, 0, paint);
    canvas.drawBitmap(topImage, 0, 0, paint);

    return output;

(未测试,我只是在这里写的,可能有一些简单的错误)

基本上你要做的是创建第三个空位图,在其上绘制底部图像,然后在其上绘制顶部图像。

至于保存到文件,这里有几个例子:Save bitmap to location

【讨论】:

【参考方案2】:

你可以这样做......

public Bitmap Overlay(Bitmap Bitmap1, Resources paramResources, Bitmap Bitmap2, int alpha)
    
      Bitmap bmp1 = Bitmap.createScaledBitmap(Bitmap2, Bitmap1.getWidth(), Bitmap1.getHeight(), true);
      Bitmap bmp2 = Bitmap.createBitmap(Bitmap1.getWidth(), Bitmap1.getHeight(), Bitmap1.getConfig());
      Paint localPaint = new Paint();
      localPaint.setAlpha(alpha);
      Canvas localCanvas = new Canvas(bmp2);
      Matrix localMatrix = new Matrix();
      localCanvas.drawBitmap(Bitmap1, localMatrix, null);
      localCanvas.drawBitmap(bmp1, localMatrix, localPaint);
      bmp1.recycle();
      System.gc();
      return bmp2;
    

【讨论】:

以上是关于Android中的叠加图像的主要内容,如果未能解决你的问题,请参考以下文章

在android中与相机捕获的图像叠加图像

在 customView 中的 ImageView 上叠加许多图像视图

android图像处理系列之七--图片涂鸦,水印-图片叠加

如何在适用于 Android 的 Google API 的 CameraSource 中保存带有叠加层的图像?

android图片特效处理之图片叠加

android图像处理系列之六--给图片添加边框(下)-图片叠加