Может ли один помочь объединить два растровых изображений в одно растровое изображениеОбъединение двух растровых изображений (бок о бок)
в андроида (бок о бок).
Спасибо, Yuvaraj
Может ли один помочь объединить два растровых изображений в одно растровое изображениеОбъединение двух растровых изображений (бок о бок)
в андроида (бок о бок).
Спасибо, Yuvaraj
Вы можете использовать Canvas
- проверить эту статью:
http://www.jondev.net/articles/Combining_2_Images_in_Android_using_Canvas
Обновленный код, чтобы сделать это бок о бок:
public Bitmap combineImages(Bitmap c, Bitmap s) { // can add a 3rd parameter 'String loc' if you want to save the new image - left some code to do that at the bottom
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);
// this is an extra bit I added, just incase you want to save the new image somewhere and then return the location
/*String tmpImg = String.valueOf(System.currentTimeMillis()) + ".png";
OutputStream os = null;
try {
os = new FileOutputStream(loc + tmpImg);
cs.compress(CompressFormat.PNG, 100, os);
} catch(IOException e) {
Log.e("combineImages", "problem combining images", e);
}*/
return cs;
}
Отличная работа в выбранный ответ. Если вы хотите сделать это со списком массива растровых изображений и бок о бок смотрите ниже:
private Bitmap combineImageIntoOneFlexWidth(ArrayList<Bitmap> bitmap) {
int w = 0, h = 0;
for (int i = 0; i < bitmap.size(); i++) {
if (i < bitmap.size() - 1) {
h = bitmap.get(i).getHeight() > bitmap.get(i + 1).getHeight() ? bitmap.get(i).getHeight() : bitmap.get(i + 1).getHeight();
}
w += bitmap.get(i).getWidth();
}
Bitmap temp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(temp);
int top = 0;
for (int i = 0; i < bitmap.size(); i++) {
Log.e("HTML", "Combine: " + i + "/" + bitmap.size() + 1);
top = (i == 0 ? 0 : top + bitmap.get(i).getWidth());
//attributes 1:bitmap,2:width that starts drawing,3:height that starts drawing
canvas.drawBitmap(bitmap.get(i), top, 0f, null);
}
return temp;
}
Спасибо xil3. Я попробовал это, но он будет совмещать два изображения один под другим. Но мне нужно объединить два изображения бок о бок – Yuvaraj
Я обновил ответ с помощью кода, который должен работать бок о бок. Всего несколько незначительных изменений от оригинала. – xil3
Большое спасибо ... Это решение, которое я ищу ... – Yuvaraj