Java: 비트맵을 바이트 배열로 변환
제공된 코드를 사용하여 비트맵 객체를 바이트 배열로 변환하려고 하면 사용자에게 다음과 같은 문제가 발생할 수 있습니다. copyPixelsToBuffer()를 호출한 후 버퍼의 모든 바이트가 0으로 유지되는 문제. 카메라에서 반환된 비트맵의 불변성에도 불구하고 복사 프로세스에 영향을 주어서는 안 됩니다.
잠재적인 근본 원인:
코드 조각은 ByteBuffer 클래스를 사용하여 메모리를 할당하고 비트맵의 픽셀을 버퍼에 넣습니다. 그러나 오프셋을 올바르게 설정하지 않고 기본 버퍼에 직접 액세스합니다. 이로 인해 get() 메서드가 0 값만 반환할 수 있습니다.
해결책:
이 문제를 해결하려면 다음 접근 방식을 사용하는 것이 좋습니다.
Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
bmp.recycle();
이 개선된 코드에서는:
이 접근 방식을 사용하면 별도의 작업 없이 Bitmap 객체를 바이트 배열로 효과적으로 변환할 수 있습니다. 버퍼 언더플로 문제가 발생했습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3