CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: bluemask con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: megthebest con ben 5 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 17 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 3 su 3
Discussione:

Invertire una immagine

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Senior Droid


    Registrato dal
    Dec 2009
    Messaggi
    307

    Ringraziamenti
    15
    Ringraziato 40 volte in 39 Posts
    Predefinito

    Invertire una immagine

    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
    2
            int bw = bIn.getWidth();
    3
            int bh = bIn.getHeight();
    4
            int[] buffer = new int[bw * bh];
    5
            
    6
            bIn.getPixels(buffer, 0, bw, 0, 0, bw, bh);
    7
            
    8
            int halfW = bw / 2;
    9
            
    10
            int line = 0;
    11
            for(int j = 0; j < bh; j++) {
    12
                line = j * bw;
    13
                for(int i = 0; i < halfW; i++) {
    14
                    final int posL = line + i;
    15
                    final int posR = line + bw - i - 1;
    16
                    
    17
                    int c = buffer[posL];
    18
                    buffer[posL] = buffer[posR];
    19
                    buffer[posR] = c; 
    20
                }
    21
            }
    22
            
    23
            Bitmap b = Bitmap.createBitmap(bw, bh, bIn.getConfig());
    24
            b.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

  2.  
  3. #2
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    The Matrix has you


    7
     
    1
    Bitmap bmp = IMMAGINE
    2
    int width = bmp.getWidth();
    3
    int height = bmpp.getHeight();
    4
    Matrix matrix = new Matrix();
    5
    matrix.preScale(-1, 1);
    6
    Bitmap modified_bmp = Bitmap.createBitmap(bmp, 0, 0, width, height, matrix, true); 
    7
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  4. Il seguente Utente ha ringraziato Cymon per il post:

    Orochi (14-08-10)

  5. #3
    Senior Droid


    Registrato dal
    Dec 2009
    Messaggi
    307

    Ringraziamenti
    15
    Ringraziato 40 volte in 39 Posts
    Predefinito

    Quote Originariamente inviato da Cymon Visualizza il messaggio
    The Matrix has you


    7
     
    1
    Bitmap bmp = IMMAGINE
    2
    int width = bmp.getWidth();
    3
    int height = bmpp.getHeight();
    4
    Matrix matrix = new Matrix();
    5
    matrix.preScale(-1, 1);
    6
    Bitmap modified_bmp = Bitmap.createBitmap(bmp, 0, 0, width, height, matrix, true); 
    7
    Wow, fantastico, grazie!

    Appena ho tempo voglio pure provare a fare un paio di test di velocità sui 2 pezzi di codice, giusto per vedere che esce fuori

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy