Android Development: Combining Small Tiles/bitmaps Into One Bitmap
Im trying to get all my small images like grass, water and asphalt and so on, into one bitmap. I have an Array that goes like this: public int Array[]={3, 1, 3, 3, 1, 1, 3, 3, 3, 3
Solution 1:
Okay so the following snippet should combine two images side by side. I didn't want to extrapolate for 10, but I'm sure you'll figure out the for loops by yourself.
public Bitmap combineImages(Bitmap c, Bitmap s) {
Bitmapcs=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);
CanvascomboImage=newCanvas(cs);
comboImage.drawBitmap(c, 0f, 0f, null);
comboImage.drawBitmap(s, c.getWidth(), 0f, null);
//notice that drawing in the canvas will automagically draw to the bitmap//as wellreturn cs;
}
Solution 2:
If all the tiles are the same size you can create one large Bitmap
and draw all the tiles in the right location. For example:
privatestaticfinalintMAP_WIDTH=10; // in tilesprivatestaticfinalintMAP_HEIGHT=10;
privatestaticfinalintTILE_WIDTH=10;
privatestaticfinalintTILE_HEIGHT=10;
public Bitmap createMap() {
BitmapmainBitmap= Bitmap.createBitmap(TILE_WIDTH * MAP_WIDTH, TILE_HEIGHT * MAP_HEIGHT,
Bitmap.Config.ARGB_8888);
CanvasmainCanvas=newCanvas(mainBitmap);
PainttilePaint=newPaint();
for (inti=0; i < map.length; i++) {
// Grab tile image (however you want - don't need to follow this)Bitmaptile= BitmapFactory.decodeResource(getResources(), getResources()
.getIdentifier(String.valueOf(map[i]), "drawable", "your.package"));
// Draw tile to correct location
mainCanvas.drawBitmap(tile, (i % MAP_WIDTH) * TILE_WIDTH,
(i / MAP_WIDTH) * TILE_HEIGHT, tilePaint);
}
return mainBitmap;
}
Post a Comment for "Android Development: Combining Small Tiles/bitmaps Into One Bitmap"