Создание 8-битного изображения в градациях серого - PullRequest
0 голосов
/ 07 октября 2019

Я занимаюсь разработкой приложений для Android и чатом. Я хочу сделать функцию, где пользователь выбирает изображение из галереи и отправляет его на сервер. Но прежде чем отправить его на сервер, я хочу применить к нему некоторые действия, чтобы уменьшить размер. Поэтому я хочу изменить размер сжатия и превратить его в GrayScale. О серой шкале я нашел следующий код.

    private fun getGrayscale(src: Bitmap): Bitmap {

        //Custom color matrix to convert to GrayScale
        val matrix = floatArrayOf(0.3f, 0.59f, 0.11f, 0f, 0f, 0.3f, 0.59f, 0.11f, 0f, 0f, 0.3f, 0.59f, 0.11f, 0f, 0f, 0f, 0f, 0f, 1f, 0f)

        val dest = Bitmap.createBitmap(
            src.width,
            src.height,
            src.config
        )

        val canvas = Canvas(dest)
        val paint = Paint()
        val filter = ColorMatrixColorFilter(matrix)
        paint.colorFilter = filter
        canvas.drawBitmap(src, 0.toFloat(), 0.toFloat(), paint)

        return dest
    }

Но когда я печатаю размер изображения, я вижу, что размер такой же, хотя цвета исчезают. Как я могу преобразовать в grayScale и уменьшить размер изображения ..?

Спасибо

...