объединение двух файлов PNG в Android - PullRequest
16 голосов
/ 29 апреля 2010

У меня есть два файла изображений PNG, которые я хотел бы, чтобы мое приложение для Android программно объединяло в один файл изображений PNG, и мне интересно, возможно ли это сделать? если это так, то я хотел бы просто наложить их друг на друга, чтобы создать один файл.

идея заключается в том, что у меня есть несколько файлов PNG, некоторые с частью изображения слева, остальные прозрачные, а другие с изображением справа и остальные прозрачные. и на основе пользовательского ввода он объединит два, чтобы сделать один файл для отображения. (и я не могу просто отобразить два изображения рядом, они должны быть одним файлом)

это можно сделать программно в андроиде и как так?

Ответы [ 5 ]

31 голосов
/ 26 мая 2010

Я уже некоторое время пытаюсь понять это.

Вот (по сути) код, который я использовал, чтобы он работал.

// Get your images from their files
Bitmap bottomImage = BitmapFactory.decodeFile("myFirstPNG.png");
Bitmap topImage = BitmapFactory.decodeFile("myOtherPNG.png");

// As described by Steve Pomeroy in a previous comment, 
// use the canvas to combine them.
// Start with the first in the constructor..
Canvas comboImage = new Canvas(bottomImage);
// Then draw the second on top of that
comboImage.drawBitmap(topImage, 0f, 0f, null);

// comboImage is now a composite of the two. 

// To write the file out to the SDCard:
OutputStream os = null;
try {
    os = new FileOutputStream("/sdcard/DCIM/Camera/" + "myNewFileName.png");
    comboImage.compress(CompressFormat.PNG, 50, os)
} catch(IOException e) {
    e.printStackTrace();
}

РЕДАКТИРОВАТЬ:

была опечатка, Итак, я изменил

image.compress(CompressFormat.PNG, 50, os)

до

bottomImage.compress(CompressFormat.PNG, 50, os)

4 голосов
/ 29 апреля 2010

Вы можете сделать смешивание. Это не относится к Android. Это просто универсальная обработка изображений.

EDIT:

Вы можете найти эти статьи, примеры и код полезными:

http://www.jhlabs.com/ip/

http://kfb -android.blogspot.com / 2009/04 / обработки изображений в-android.html

http://code.google.com/p/jjil/

Обработка изображений на Android

0 голосов
/ 13 января 2017

Попробуйте это.

public Bitmap mergeBitmap(Bitmap frame, Bitmap img){

    Bitmap bmOverlay = Bitmap.createBitmap(frame.getWidth(), frame.getHeight(), frame.getConfig());
    Canvas canvas = new Canvas(bmOverlay);
    canvas.drawBitmap(img, 0, 0, null);
    canvas.drawBitmap(frame, new Matrix(), null);

    return bmOverlay;

}

Возвращает растровое изображение

Передайте два растровых изображения в вашу функцию, как показано ниже

Bitmap img= mergeBitmap(imgone, imagetwo);

См. весь пост или также см. объединение нескольких изображений в Android программно

0 голосов
/ 29 апреля 2010

Если они имеют прозрачные секции, то если вы рисуете одну поверх другой, только непрозрачные части будут перекрываться. Это будет зависеть от вас, чтобы организовать растровые изображения, как вам нравится.

Для отдельной проблемы повторного сохранения изображения в png используйте bitmap.compress ().

0 голосов
/ 29 апреля 2010

Возможно, вы захотите взглянуть на объект Canvas , который также облегчит выполнение других операций рисования. Вы можете просто нарисовать свои растровые изображения на холсте там, где вы хотите, а затем сохранить полученное растровое изображение.

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