Java: 비트맵을 바이트 배열로 변환
제공된 코드를 사용하여 비트맵 객체를 바이트 배열로 변환하려고 할 때 사용자는 다음과 같은 문제가 발생할 수 있습니다. copyPixelsToBuffer()를 호출한 후 버퍼의 모든 바이트가 0으로 유지되는 문제. 카메라에서 반환된 비트맵의 불변성에도 불구하고 복사 프로세스에 영향을 주어서는 안 됩니다.
잠재적인 근본 원인:
코드 조각은 ByteBuffer 클래스를 사용하여 메모리를 할당하고 비트맵의 픽셀을 버퍼에 넣습니다. 그러나 오프셋을 올바르게 설정하지 않고 기본 버퍼에 직접 액세스합니다. 이로 인해 get() 메서드가 0 값만 반환할 수 있습니다.
해결책:
이 문제를 해결하려면 다음 접근 방식을 사용하는 것이 좋습니다.
<code class="java">Bitmap bmp = intent.getExtras().get("data"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] byteArray = stream.toByteArray(); bmp.recycle();</code>
이 문제에서는 개선된 코드:
이를 사용하여 이 접근 방식을 사용하면 버퍼 언더플로 문제가 발생하지 않고 Bitmap 객체를 바이트 배열로 효과적으로 변환할 수 있습니다.
위 내용은 비트맵에서 copyPixelsToBuffer()를 호출한 후 버퍼의 모든 바이트가 0인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!