Объединение двух png файлов в android
У меня есть два файла изображений png, которые я бы хотел, чтобы мое приложение для Android объединило программно в один файл изображения png, и мне интересно, можно ли это сделать? если да, то то, что я хотел бы сделать, просто наложить их друг на друга, чтобы создать один файл.
Идея заключается в том, что у меня есть несколько файлов png, некоторые с частью изображения слева, а остальные прозрачны, а остальные - с изображением справа, а остальные - прозрачными. и, основываясь на пользовательском вводе, он объединит их, чтобы отобразить один файл. (и я не могу просто отображать два изображения бок о бок, они должны быть одним файлом)
возможно ли это сделать программно в android и как это сделать?
Ответы
Ответ 1
Я пытался понять это на некоторое время.
Здесь (по существу) код, который я использовал, чтобы он работал.
// 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);
// bottomImage 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");
image.compress(CompressFormat.PNG, 50, os)
} catch(IOException e) {
e.printStackTrace();
}
EDIT:
была опечатка,
Итак, я изменил
image.compress(CompressFormat.PNG, 50, os)
to
bottomImage.compress(CompressFormat.PNG, 50, os)
Ответ 2
Вы можете выполнять смешение. Это не относится к Android. Это просто универсальная обработка изображений.
EDIT:
Вы можете найти эти статьи, образцы и код полезными:
http://www.jhlabs.com/ip/
http://kfb-android.blogspot.com/2009/04/image-processing-in-android.html
http://code.google.com/p/jjil/
Обработка изображений на Android
Ответ 3
Возможно, вы захотите изучить объект Canvas, что облегчит выполнение других операций рисования. Вы можете просто нарисовать свои растровые изображения на холсте, где вы хотите их, а затем сохранить полученный растровый рисунок.
Ответ 4
Если у них есть прозрачные секции, тогда, если вы нарисуете один поверх другого, только непрозрачные части будут перекрываться. Вам будет удобно расположить растровые изображения, как вам нравится.
Для отдельной проблемы повторного сохранения изображения в png используйте bitmap.compress().
Ответ 5
Попробуйте это.
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