>Java >java지도 시간 >Java 비트맵을 바이트 배열로 변환하면 모두 0이 되는 이유는 무엇입니까?

Java 비트맵을 바이트 배열로 변환하면 모두 0이 되는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-05 07:58:02378검색

Why Does My Java Bitmap Conversion to a Byte Array Result in All 0s?

Java 비트맵에서 바이트 배열 변환 재평가

Java 비트맵을 바이트 배열로 변환하려고 할 때 개발자가 특이한 문제에 직면합니다. 여기서 비트맵이 카메라에서 획득되었음에도 불구하고 결과 바이트 배열에는 모두 0이 포함됩니다.

이 변환에 사용된 코드 조각에는 비트맵의 행 바이트, 높이를 추출하고 계산된 크기의 ByteBuffer를 할당하는 작업이 포함되었습니다. 그런 다음 CopyPixelsToBuffer를 사용하여 이미지 데이터를 버퍼로 전송한 다음 새로 생성된 바이트 배열로 바이트를 추출했습니다.

검사 결과 코드는 정상인 것 같습니다. 그러나 근본적인 문제는 비트맵의 불변성에 있습니다. copyPixelsToBuffer는 비트맵 데이터의 복사본을 만들려고 하지만 불변성으로 인해 기본 이미지는 변경되지 않고 유지되므로 버퍼가 0으로 채워집니다.

대체 접근 방식이 확실한 솔루션을 제공합니다.

ByteArrayOutputStream

비트맵을 바이트 배열로 효과적으로 변환하려면 Bitmap의 압축 방법과 함께 ByteArrayOutputStream을 사용하는 것이 좋습니다. 이 기술은 비트맵을 특정 형식(이 경우 PNG)으로 압축하고 압축된 데이터를 바이트 배열에 씁니다. 그런 다음 비트맵을 재활용하여 메모리를 확보할 수 있습니다.

이 전략을 구현하면 Java 비트맵을 바이트 배열로 안정적으로 변환하여 copyPixelsToBuffer에서 발생한 문제를 해결하고 이미지를 나타내는 유효한 바이트 배열을 생성할 수 있습니다. .

위 내용은 Java 비트맵을 바이트 배열로 변환하면 모두 0이 되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.