Как преобразовать 2d массив целых чисел в 8-битное растровое изображение в градациях серого? - PullRequest
0 голосов
/ 28 ноября 2018

Мне нужно преобразовать двумерный массив целых чисел (содержащий значения от 0 до 255) в 8-битное растровое изображение в оттенках серого.Я использую библиотеку IndexedBitmap , которая должна поддерживать это:

Эта библиотека может использоваться для создания растрового изображения с индексированным цветом 8BPP (8 бит на пиксель), поэтомузанимает место на диске - это четверть 32-битного растрового изображения того же размера (как ARGB8888).

Это мой код:

fun convertTwoDimensionalArrayToBitmap(inputArray: Array<IntArray>): Bitmap {
    val height = inputArray.size
    val width = inputArray[0].size
    val byteArray = ByteArray(height * width)
    var index = 0
    for (i in 0 until height) {
        for (j in 0 until width) {
            val byte = inputArray[i][j].toByte()
            byteArray[index] = byte
            index++
        }
    }

    val palette = PaletteFactory.getGrayPalette()
    return IndexBitmapFactory.createBitmap(
            byteArray, palette, 0, 0, width, height, false)
}

И я получаю следующую ошибкукогда я пытаюсь использовать его (в этом случае я передаю 256 на 256 2d массив):

> 2018-11-28 16:03:46.913
> 23154-23175/com.my.package.test D/IndexBitmap: Raw
> buffer length = 66596 2018-11-28 16:03:46.913
> 23154-23175/com.my.package.test D/Bitmap:
> Bitmap_createFromParcel: Serialized SkColorSpace is larger than
> expected: 256 bytes 2018-11-28 16:03:46.913
> 23154-23175/com.my.package.test W/System.err:
> java.lang.RuntimeException: Failed to unparcel Bitmap 2018-11-28
> 16:03:46.914 23154-23175/com.my.package.test
> W/System.err:     at
> android.graphics.Bitmap$1.createFromParcel(Bitmap.java:1781)
> 2018-11-28 16:03:46.914
> 23154-23175/com.my.package.test W/System.err:     at
> android.graphics.Bitmap$1.createFromParcel(Bitmap.java:1772)
> 2018-11-28 16:03:46.914
> 23154-23175/com.my.package.test W/System.err:     at
> com.badpx.indexbitmap.graphics.IndexBitmapFactory.createBitmap(IndexBitmapFactory.java:97)
> 2018-11-28 16:03:46.914
> 23154-23175/com.my.package.test W/System.err:     at
> com.badpx.indexbitmap.graphics.IndexBitmapFactory.createBitmap(IndexBitmapFactory.java:78)

Использую ли я эту библиотеку неправильно?Есть ли другой способ преобразования 2d массива в 8 битное растровое изображение на Android?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...