Объедините два изображения в Android Java - PullRequest
10 голосов
/ 31 марта 2011

Итак, у меня есть два изображения, хранящиеся локально на SD-карте в Android, и я хочу объединить их в одно изображение.Это сложно объяснить, поэтому я собираюсь дать ссылку на картинку для лучшего примера того, как я хочу взять первые два изображения и объединить их в последнее.

http://img850.imageshack.us/i/combinedh.jpg/

Ответы [ 4 ]

11 голосов
/ 09 апреля 2012

Обычно я использую следующую функцию от Джона Саймона для объединения двух битовых изображений, переданных в качестве аргумента, и получения комбинированного битового изображения в качестве вывода,

    public 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; 
}  
11 голосов
/ 31 марта 2011

Создайте свою цель Bitmap, создайте для нее Canvas, используйте Canvas.drawBitmap для включения каждого исходного растрового изображения в ваше целевое растровое изображение.

2 голосов
/ 31 марта 2011

Самый простой способ сделать это - использовать два ImageView в RelativeLayout.Вы можете расположить ImageViews друг над другом в макете.

0 голосов
/ 08 сентября 2018

Аналогично ответу Хитеша , но с параметрами для указания положения изображения на переднем плане:

public static Bitmap mergeBitmaps(Bitmap bitmapBg, Bitmap bitmapFg, float fgLeftPos, float fgTopPos) {

    // Calculate the size of the merged Bitmap
    int mergedImageWidth = Math.max(bitmapBg.getWidth(), bitmapFg.getWidth());
    int mergedImageHeight = Math.max(bitmapBg.getHeight(), bitmapFg.getHeight());

    // Create the return Bitmap (and Canvas to draw on)
    Bitmap mergedBitmap = Bitmap.createBitmap(mergedImageWidth, mergedImageHeight, bitmapBg.getConfig());
    Canvas mergedBitmapCanvas = new Canvas(mergedBitmap);

    // Draw the background image
    mergedBitmapCanvas.drawBitmap(bitmapBg, 0f, 0f, null);

    //Draw the foreground image
    mergedBitmapCanvas.drawBitmap(bitmapFg, fgLeftPos, fgTopPos, null);

    return mergedBitmap;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...