>Java >java지도 시간 >copyPixelsToBuffer를 사용한 후 Java 비트맵 버퍼가 0으로 채워지는 이유는 무엇입니까?

copyPixelsToBuffer를 사용한 후 Java 비트맵 버퍼가 0으로 채워지는 이유는 무엇입니까?

DDD
DDD원래의
2024-11-05 09:06:02355검색

Why is my Java bitmap buffer filled with zeros after using copyPixelsToBuffer?

Java 비트맵을 바이트 배열로: 버퍼 문제 해결

Java 비트맵을 바이트 배열로 변환하려고 할 때 일부 사용자는 다음과 같은 문제가 발생합니다. copyPixelsToBuffer 메서드를 사용하여 픽셀을 복사한 후 버퍼에 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>

이 수정된 코드에서는 , 픽셀을 버퍼에 직접 복사하는 대신 ByteArrayOutputStream을 사용하여 비트맵을 PNG 형식(품질 수준 100)으로 압축합니다. 이 프로세스는 비트맵의 데이터를 포함하는 바이트 배열을 생성합니다. 또한 코드는 메모리 누수를 방지하기 위해 재활용 메서드를 호출하여 비트맵의 리소스를 해제합니다.

위 내용은 copyPixelsToBuffer를 사용한 후 Java 비트맵 버퍼가 0으로 채워지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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