Android: невозможно создать растровое изображение с помощью метода createBitmap - PullRequest
0 голосов
/ 18 октября 2011

Я довольно новичок в программировании на платформе Android. У меня проблемы с массированием массива int, чтобы превратить его в растровое изображение.

Каждый элемент в массиве 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.

Редактировать: думал, что это могло быть потому, что альфа была 256 вместо 255, но я все еще получаю ту же ошибку.

Ответы [ 2 ]

0 голосов
/ 18 октября 2011

Как вы узнаете, что ваше растровое изображение имеет размер [-1 -1]?Чтобы получить размер, используйте:

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

Это нормально работает.

0 голосов
/ 18 октября 2011

Я не уверен, что вы можете создать растровое изображение непосредственно из массива int. Возможно, вам придется перебирать пиксели растрового изображения и устанавливать значение пикселя из массива с помощью метода setPixel растрового изображения.

bitmap.setPixel (int x, int y, int color)
...