伙计们,我有一个解决方案可以从另外 5 个不同的位图创建一个位图。但是,我希望这个解决方案更快。我找不到另一种简单快捷的方法来做同样的事情。
private void createImage() {
// Magic numbers from image files
int numberOfImages = 5;
int imgWidth = 125;
int imgHeight = 300;
int totalwidth = imgWidth * numberOfImages;
int totalheight = imgHeight;
img = Bitmap.createBitmap(totalwidth, totalheight, Bitmap.Config.ARGB_8888);
for (int i = 0; i < numberOfImages; i++) {
Bitmap imgFile = BitmapFactory.decodeResource(context.getResources(), context.getResources().getIdentifier(
"f" + i, "drawable", context.getPackageName()));
for (int x = 0; x < imgWidth; x++) {
for (int y = 0; y < imgHeight; y++) {
int targetX = x + (i * imgWidth);
int targetY = y;
int color = imgFile.getPixel(x, targetY);
img.setPixel(targetX, targetY, color);
}
}
}
img = Bitmap.createScaledBitmap(img, screenWidth, screenHeight, true);
}
最佳答案
你大部分时间都在那里。您已经为它们创建了一个足够宽的位图。
然后您需要做的是一次将位图直接绘制到其上,但一次绘制整个位图,而不是逐个像素。
你可以使用调用 Canvas
的东西来做到这一点.这有助于将内容绘制到位图上。
img = Bitmap.createBitmap(totalwidth, totalheight, Bitmap.Config.ARGB_8888);
Canvas drawCanvas = new Canvas(img);
for (int i = 0; i < numberOfImages; i++) {
Bitmap imgFile = BitmapFactory.decodeResource(context.getResources(), context.getResources().getIdentifier(
"f" + i, "drawable", context.getPackageName()));
// Draw bitmap onto combo bitmap, at offset x, y.
drawCanvas.drawBitmap(imgFile, i * imgWidth, 0, null);
}
关于android - 其中许多的位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13664182/