Advertisement
myLoveOnlyForYou

Untitled

May 24th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.42 KB | None | 0 0
  1. fun rotateImage(mainImage: ImageView){
  2.         var oldBitmap = (mainImage.drawable as BitmapDrawable).bitmap // создаем битмап из imageview
  3.         var height = oldBitmap.height // высота картинки и битмапа
  4.         var width = oldBitmap.width // ширина
  5.         var oldBittmapPixelsArray = IntArray(width * height) // массив его пикселей (пока просто массив, не двумерный, и пока он пустой, то есть ничего не содержит, т.е. пока это просто массив длиной width * height)
  6.         var newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)  // ноздаем новый битмап (пока пустой, но шириной и высотой такой же, как и прошлый)
  7.         var newBitmapPixelsArray = oldBittmapPixelsArray // создаем массив пикселей нового битмапа
  8.         oldBitmap.getPixels(oldBittmapPixelsArray, 0, width, 0, 0, width, height) // заполняем старый массив пикселей пикселями из старого битмапа
  9. // а тут мы первращаем массив пикселей в матрицу пикселей
  10.         val array = oldBittmapPixelsArray // массив-донор - массив пикселей старого битмапа
  11.         var matrix = Array(height) { IntArray(width) } //будущая матрица
  12.         var count = 0
  13.         for (i in matrix.indices) {
  14.             for (j in 0 until matrix[i].size) {
  15.                 matrix[i][j] = array[count++] //перенос элементов из донора в матрицу
  16.             }
  17.         }
  18.         var newMatrix = Array(width) { IntArray(height) }
  19.  
  20.         for (rw in 0 until height)
  21.             for (cl in 0 until width) {
  22.                 newMatrix[width - 1 - cl][rw] = matrix[rw][cl]
  23.             }
  24.  
  25.         val tmp: Int
  26.         tmp = height
  27.         height = width
  28.         width = tmp
  29.  
  30.         for (row in 0 until height){
  31.             for (column in 0 until width) {
  32.                 newBitmapPixelsArray[(row * width) + column] = newMatrix[row][column] // from matrix to new empty pixels array
  33.             }
  34.         }
  35.         newBitmap.setPixels(newBitmapPixelsArray, 0, width, 0, 0, width, height) // здесь вылет
  36. //        mainImage.setImageBitmap(newBitmap)
  37.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement