비트맵 조작은 Android 개발에서 일반적인 작업으로, 종종 데이터 저장 또는 전송을 위해 비트맵을 바이트 배열로 변환하는 작업이 포함됩니다. 그러나 일부 개발자는 이 변환을 수행하려고 할 때 어려움을 겪으며 다음 질문으로 이어집니다.
Q: copyPixelsToBuffer를 사용하여 비트맵을 변환한 후 복사된 바이트 배열이 0으로 채워지는 이유는 무엇입니까?
제공된 코드 조각은 copyPixelsToBuffer를 사용하여 비트맵을 바이트 배열로 변환하려는 시도를 보여 주지만 결과 버퍼에는 0만 포함됩니다. 이 문제의 원인을 이해하기 위해 코드를 분석해 보겠습니다.
자세히 조사해 보면 문제가 copyPixelsToBuffer 메서드 자체에 있다는 것이 분명해졌습니다. 불변 비트맵을 사용하는 경우 실제 픽셀 복사를 수행하지 않고 중복 참조를 반환합니다. 따라서 이후의 비트맵 수정 사항은 복사된 버퍼에 반영되지 않습니다.
비트맵을 바이트 배열로 효과적으로 변환하려면 대체 방법 고용되어야 합니다. 신뢰할 수 있는 접근 방식 중 하나는 PNG 또는 JPEG와 같은 형식을 사용하여 비트맵을 압축하고 압축된 데이터를 바이트 배열에 저장하는 것입니다. 예는 다음과 같습니다.
Bitmap bmp = intent.getExtras().get("data"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] byteArray = stream.toByteArray(); bmp.recycle();
이 코드 조각은 다음 단계를 따릅니다.
BitmapFactory 클래스를 사용하여 바이트 배열에서 비트맵 데이터를 검색할 수도 있습니다.
BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
위 내용은 copyPixelsToBuffer를 사용하여 비트맵을 변환한 후 내 바이트 배열에 0이 포함되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!