Эффект растрового зеркалирования (флип) не работает должным образом на некоторых устройствах - PullRequest
0 голосов
/ 12 февраля 2020

Эффекты зеркального отображения или отражения не работают должным образом на некоторых устройствах (в настоящее время на Samsung). Я пытаюсь перевернуть изображение фронтальной камеры. Изображение поворачивается в другом направлении, на Huawei P20 работает нормально.

 private fun setAvatarImage(byteArray: ByteArray) {
            // mirroring
            var bitmap: Bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.size)
            if (avatarMode == AvatarMode.FRONT_CAMERA_PHOTO.mode) {
                bitmap = mirroringBitmapEffect(bitmap)
            }
            val stream = ByteArrayOutputStream()
            bitmap.compress(Bitmap.CompressFormat.JPEG, 0, stream)
            avatarByteArray = stream.toByteArray()
}

    private fun mirroringBitmapEffect(imgBitmap: Bitmap): Bitmap {
        val matrix = Matrix()
        matrix.preScale(-1f, 1f)
        val srcBitmap: Bitmap = imgBitmap
        val destBitmap: Bitmap = Bitmap.createBitmap(srcBitmap, 0, 0, srcBitmap.width, srcBitmap.height, 
       matrix, false);
        destBitmap.density = DisplayMetrics.DENSITY_DEFAULT
        return destBitmap
    }

1 Ответ

0 голосов
/ 12 февраля 2020

вы пытались перевернуть из центра bitmap

private fun Bitmap.flip(x: Float, y: Float, cx: Float, cy: Float): Bitmap {
        val matrix = Matrix().apply { postScale(x, y, cx, cy) }
        return Bitmap.createBitmap(this, 0, 0, width, height, matrix, true)
    }

использовать

val centerx = bitmap.width / 2f
val centery = bitmap.height / 2f
val flipBitmap = bitmap.flip(-1f, 1f, centerx , centery )
imageview.setImageBitmap(flipBitmap)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...