Domanda

Sto analizzando l'utilizzo della memoria della mia app Android con l'aiuto di Eclipse Memory Analyzer (noto anchecome tappeto).A volte riesco a trovare strani istanze di classe android.graphics.Bitmap, utilizzando una grande porzione di heap.Il problema è ciò che non riesco a trovare la fonte di queste bitmap, no nome file , no risorsa , niente.Tutte le informazioni Cosa posso trovare per Bitmap segue: bitmap_info

C'è un campo mBuffer con la matrice di pixel dell'immagine, presumo.Ma è in qualche formato interno Android, non PNG.

Domanda : Come posso visualizzare l'immagine rappresentata da questa bitmap dalla discarica di memoria?

È stato utile?

Soluzione

Ho trovato un modo per visualizzare tali bitmap:

    .
  • In primo luogo, è necessario scaricare e installare Gimp
  • Avanti, trova il tuo oggetto Bitmap in Mat, fare clic con il tasto destro del mouse su mBuffer campo, nel menu popup Seleziona "Copia" -> "Salva valore in file" menu Elemento e risparmiare valore di questo array in qualche file
  • Dare un'estensione .data a quel file
  • Avvia GIMP, scegli "File" -> "Apri" , seleziona il tuo file .data e fai clic sul pulsante
  • Apri
  • "Carica immagine da dati raw" verrà visualizzata la finestra di dialogo. Qui è necessario impostare i parametri corretti per la tua bitmap
  • Innanzitutto, scegliere "Tipo immagine" come "RGB ALPHA" (La maggior parte delle risorse Android ha questo tipo di immagine, ma potrebbe essere necessario sperimentare con altri tipi di immagini) < / li >.
  • secondo, impostare correttamente larghezza e altezza per la tua bitmap (le dimensioni corrette possono essere trovate nella discarica di memoria)

A quel punto dovresti già osservare l'anteprima dell'immagine originale. Se non l'hai fatto, puoi provare a modificare alcuni altri parametri in "Carica immagine da Dialog di dati Raw" .

Nota: per ottenere una larghezza e un'altezza dell'immagine è possibile guardare mWidth e mHeight Games in Mat nella sezione Attributes come mostrato nell'immagine in questione.

Altri suggerimenti

È possibile convertire le discariche di memoria da Mat a PNG utilizzando con ImageMagick sulla riga di comando.

In MAT per oggetto Bitmap correlato Fare clic con il tasto destro del mouse sul campo mBuffer e seleziona "Copia" -> "Salva valore in file", nome il file con un'estensione .rgba.

È necessario notare la larghezza e l'altezza bitmap dai campi mWidth e mHeight, che è possibile visualizzare nell'oggetto bitmap.

Avere strumenti di riga di comando ImageMagick installati (per Ubuntu apt-get install imagemagick), emetti il comando convert con i seguenti parametri.

convert -size 'width'x'height' -depth 8 filename.rgba filename.png
.

Ad esempio

 convert -size 680x1209 -depth 8 phone_decor.rgba phone_decor.png
.

È possibile controllare il file PNG generato tramite EOG , come eog phone_decor.rgba su Ubuntu facilmente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top