合并两个位图数据

时间:2014-06-21 06:19:02

标签: android file canvas bitmap android-bitmap

对于我的应用程序,我根据我的要求创建了两个位图。

一个用于经过某些图像处理的实际图像,另一个用于仅在左上角显示应用程序徽标的徽标位图。

现在节省时间我想组合这些位图,并希望生成单个JPEG文件作为输出。

要完成此任务,我已编写以下代码。

orignalbitmap = orignalbitmap.copy(Config.ARGB_8888, true);
Canvas savedCanvas = new Canvas(orignalbitmap);
savedCanvas.setBitmap(logoBitmap);
savedCanvas.drawBitmap(orignalbitmap, 0, 0, transPaint);
savedCanvas.drawBitmap(logoBitmap, 0, 0, transPaint);


try {
    orignalbitmap.compress(CompressFormat.JPEG, 100, new FileOutputStream(new File("/mnt/sdcard/original.jpg")));
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

但是目前我只将原始图像作为输出而没有附加徽标。我想要带有徽标的图像以及徽标位图中可用的数据。那么如何结合我无法理解的位图数据,请在此提供一些指导。

1 个答案:

答案 0 :(得分:1)

使用此函数在单个位图中组合两个位图

public static Bitmap combineImages(Bitmap c, Bitmap s) 
{ 
    Bitmap cs = null; 

    int width, height = 0; 

    if(c.getWidth() > s.getWidth()) { 
        width = c.getWidth() + s.getWidth(); 
        height = c.getHeight(); 
    } else { 
        width = s.getWidth() + s.getWidth(); 
        height = c.getHeight(); 
    } 

    cs = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 

    Canvas comboImage = new Canvas(cs); 

    comboImage.drawBitmap(c, 0f, 0f, null); 
    comboImage.drawBitmap(s, c.getWidth(), 0f, null); 

    return cs; 
}