Android:无法使用createBitmap方法创建Bitmap

时间:2011-10-18 05:16:15

标签: android graphics bitmap

我对Android平台上的编程很新。我在按摩int数组时遇到了一些问题,把它变成了Bitmap。

int数组中的每个元素都是0到255之间的数字,表示灰度像素颜色(因此0将为黑色,255将为白色等等)。这是我的代码:

int nPixels = 262144;
int width = 512;
int height = 512;
int[] converted = new int[nPixels];
int alpha = 255;
for (int i = 0; i < nPixels; i++) {
    //greyscale, so all r, g, and b have the same value
    converted[i] = (alpha << 24) | (pixels[i] << 16) | (pixels[i] << 8) | pixels[i];
}

Bitmap bm = Bitmap.createBitmap(converted, width, height, Bitmap.Config.ARGB_8888);

生成的位图的高度和宽度为-1,表示createBitmap函数不起作用。我的方法出了什么问题?

哦,我从http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CreateBitmap.html采取了变换部分来制作颜色。

编辑:认为它可能是因为alpha是256而不是255,但我仍然得到相同的错误。

2 个答案:

答案 0 :(得分:0)

您如何知道您的位图大小为[-1 -1]? 要获得大小,请使用:

int w = bm.getWidth();
int h = bm.getHeight();

这很好。

答案 1 :(得分:-1)

我不确定你是否可以直接从int数组创建位图。您可能需要迭代位图的像素,并使用位图setPixel方法设置数组中的像素值。

bitmap.setPixel (int x, int y, int color)
相关问题