Mat (Eclipse Memory Analyzer) - Come visualizzare bitmaps dalla discarica di memoria
-
13-12-2019 - |
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:
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?
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 sumBuffer
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.