Java: convertendo bitmap em matriz de bytes
Ao tentar converter um objeto Bitmap em uma matriz de bytes usando o código fornecido, os usuários podem encontrar um problema em que todos os bytes no buffer permanecem em 0 após chamar copyPixelsToBuffer(). Apesar da imutabilidade do Bitmap retornado da câmera, isso não deve afetar o processo de cópia.
Causa raiz potencial:
O snippet de código usa a classe ByteBuffer para alocar memória e copiar o Bitmap pixels no buffer. No entanto, ele acessa diretamente um buffer subjacente sem definir seu deslocamento corretamente. Isso pode fazer com que o método get() retorne apenas valores 0.
Solução:
Para corrigir esse problema, considere usar a seguinte abordagem:
Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
bmp.recycle();
Neste código aprimorado:
Ao usar essa abordagem, você pode efetivamente converter um objeto Bitmap em uma matriz de bytes sem encontrando o problema de buffer underflow.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3