Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fun rotateImage(mainImage: ImageView){
- var oldBitmap = (mainImage.drawable as BitmapDrawable).bitmap // создаем битмап из imageview
- var height = oldBitmap.height // высота картинки и битмапа
- var width = oldBitmap.width // ширина
- var oldBittmapPixelsArray = IntArray(width * height) // массив его пикселей (пока просто массив, не двумерный, и пока он пустой, то есть ничего не содержит, т.е. пока это просто массив длиной width * height)
- var newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) // ноздаем новый битмап (пока пустой, но шириной и высотой такой же, как и прошлый)
- var newBitmapPixelsArray = oldBittmapPixelsArray // создаем массив пикселей нового битмапа
- oldBitmap.getPixels(oldBittmapPixelsArray, 0, width, 0, 0, width, height) // заполняем старый массив пикселей пикселями из старого битмапа
- // а тут мы первращаем массив пикселей в матрицу пикселей
- val array = oldBittmapPixelsArray // массив-донор - массив пикселей старого битмапа
- var matrix = Array(height) { IntArray(width) } //будущая матрица
- var count = 0
- for (i in matrix.indices) {
- for (j in 0 until matrix[i].size) {
- matrix[i][j] = array[count++] //перенос элементов из донора в матрицу
- }
- }
- var newMatrix = Array(width) { IntArray(height) }
- for (rw in 0 until height)
- for (cl in 0 until width) {
- newMatrix[width - 1 - cl][rw] = matrix[rw][cl]
- }
- val tmp: Int
- tmp = height
- height = width
- width = tmp
- for (row in 0 until height){
- for (column in 0 until width) {
- newBitmapPixelsArray[(row * width) + column] = newMatrix[row][column] // from matrix to new empty pixels array
- }
- }
- newBitmap.setPixels(newBitmapPixelsArray, 0, width, 0, 0, width, height) // здесь вылет
- // mainImage.setImageBitmap(newBitmap)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement