Ho caricato una Bitmap da un file PNG e vorrei invertirla, ovvero specchiare il contenuto lungo l'asse centrale.
Al momento sto facendo così:
1
2int bw = bIn.getWidth();
3int bh = bIn.getHeight();
4int[] buffer = new int[bw * bh];
5
6bIn.getPixels(buffer, 0, bw, 0, 0, bw, bh);
7
8int halfW = bw / 2;
9
10int line = 0;
11for(int j = 0; j < bh; j++) {
12line = j * bw;
13for(int i = 0; i < halfW; i++) {
14final int posL = line + i;
15final int posR = line + bw - i - 1;
16
17int c = buffer[posL];
18buffer[posL] = buffer[posR];
19buffer[posR] = c;
20}
21}
22
23Bitmap b = Bitmap.createBitmap(bw, bh, bIn.getConfig());
24b.setPixels(buffer, 0, bw, 0, 0, bw, bh);
25
In pratica scorro l'immagine riga per riga e inverto il 1° pixel con l'ultimo, il 2° col penultimo e così via fino a metà della riga.
Questo metodo funziona, ma mi chiedevo se ci fosse qualche altro sistema magari più rapido o efficiente utilizzando magari qualche API dell'SDK.
Thanks