Мне нужно преобразовать двумерный массив целых чисел (содержащий значения от 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?