Я пытаюсь создать расширение для поворота растрового изображения, и оно кажется единственным способом сделать это - создать новое растровое изображение и повернуть его в Bitmap.createBitmap (...).
Моя проблема в том, что я не хочу, чтобы функция возвращала какое-либо значение, просто измените себя.
Это выполнимо?
Код до сих пор:
fun Bitmap.adjustToNaturalOrientation(image_absolute_path: String) {
val exifInterface = ExifInterface(image_absolute_path)
val orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL)
when (orientation) {
ExifInterface.ORIENTATION_ROTATE_90 -> rotate( 90f)
ExifInterface.ORIENTATION_ROTATE_180 -> rotate( 180f)
ExifInterface.ORIENTATION_ROTATE_270 -> rotate(270f)
ExifInterface.ORIENTATION_FLIP_HORIZONTAL -> flip(true, false)
ExifInterface.ORIENTATION_FLIP_VERTICAL -> flip( false, true)
}
}
fun Bitmap.rotate(degrees: Float): Bitmap {
val matrix = Matrix()
matrix.postRotate(degrees)
return Bitmap.createBitmap(this, 0, 0, this.width, this.height, matrix, true) // Returns a new bitmap.
}
fun Bitmap.flip(flipHorizontal: Boolean, flipVertical: Boolean) {
val matrix = Matrix()
matrix.preScale(if(flipHorizontal) -1f else 1f, if(flipVertical) -1f else 1f)
this = Bitmap.createBitmap(this, 0, 0, this.width, this.height, matrix, true)// Does not compile
}
Мне нужна функциональность flip без возвращаемого значения.
В своей основной деятельности я просто хочу написать:
mBitmap.adjustToNaturalOrientation(src)