Pergunta

Eu estou analisando o uso de memória do meu aplicativo Android com a ajuda de Eclipse Memory Analyzer (também conhecido como MAT).Às vezes eu posso achar estranho instâncias de android.graphics.Bitmap classe, utilizando grande parte da pilha.O problema é que eu não consigo encontrar a fonte desta bitmaps, não nome de ficheiro, não resourceID, nada.Todas as informações que eu posso encontrar para o mapa de bits é o seguinte:bitmap_info

Há um campo mBuffer com a matriz de pixels da imagem, eu suponho.Mas em alguns interno Android formato PNG.

Pergunta:como posso ver a imagem representada por este mapa de bits a partir de despejo de memória?

Foi útil?

Solução

Eu encontrei uma maneira de ver esses bitmaps:

  • Primeiro, você precisa baixar e instalar GIMP
  • De seguida, encontrar o seu Bitmap objeto no TAPETE, clique com o botão direito do mouse em mBuffer campo, no menu de contexto escolha "Copiar" -> "Salvar O Valor Para Arquivo" item de menu e salvar o valor desta matriz para alguns ficheiros
  • dar de extensão .data para arquivo
  • lançamento do GIMP, escolha "Arquivo" -> "Abrir", selecione seu .data arquivo e clique em Aberto botão
  • "Carregar Imagens a partir de Dados Brutos" caixa de diálogo irá aparecer.Aqui você precisa para definir parâmetros corretos para o mapa de bits
  • primeiro, escolha "Tipo de imagem" como "RGB Alpha" (Android mais recursos têm este tipo de imagem, mas você pode precisar experimentar com outros tipos de imagem)
  • segundo, o conjunto correto Largura e Altura para o mapa de bits (dimensões corretas podem ser encontradas no despejo de memória)

Nesse ponto, você já deve observar pré-visualização da imagem original.Se não, você pode tentar alterar alguns outros parâmetros de "Carregar Imagens a partir de Dados Brutos" diálogo.

NOTA:para obter uma largura e altura da imagem, você pode olhar para mWidth e mHeight campos em ESTEIRA na seção atributos, como mostrado na imagem em questão.

Outras dicas

Você pode converter de despejos de memória do TAPETE png usando com ImageMagick na linha de comando.

No MAT relacionados Bitmap objeto do direito do rato mBuffer campo e selecione "Copiar" -> "Salvar o Valor Para o Arquivo", o nome do arquivo com um .rgba extensão.

Você precisa observação de mapa de bits de largura e altura de mWidth e mHeight campos, que você pode ver no objecto de mapa de bits.

Ter ImageMagick ferramentas de linha de comando instalado (para o Ubuntu apt-get install imagemagick), a emissão de convert comando com os seguintes parâmetros.

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

Por exemplo

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

Você pode verificar gerado o arquivo png através de eog, como eog phone_decor.rgba no Ubuntu facilmente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top