2011-08-25 5 views
3

원시 코드를 사용하고 있으며 픽셀 버퍼 (int * 버퍼)가 있습니다. 특정 너비, 높이의 버퍼에서 android.util.Bitmap 인스턴스를 만들고 싶습니다.안드로이드 비트 맵 android.graphics.Bitmap 인스턴스를 생성하는 네이티브 API

현재 버퍼를 Java로 반환하고 android.graphics.Bitmap.createBitmap()을 사용하여 Bitmap 인스턴스를 만듭니다. 하지만 그것은 효율적이지 않은 것 같아 내 전화 (적은 리소스) OutOfMemoryException throw하지만 태블릿 (더 많은 리소스)에서 작동합니다.

내 질문은 : 어떻게 원래 방식으로 비트 맵 인스턴스를 만들 수 있습니까? 즉, C에서 이러한 인스턴스를 만들고 JNI 인터페이스를 사용하여 Java에서 비트 맵으로 반환 할 수 있습니까?

+0

죄송합니다. 원시 코드의 버퍼와 자바의 비트 맵을 어떻게 전달합니까? – 4ntoine

답변

1

비트 맵의 ​​크기는 얼마입니까? Java에서 OOM을 던지면 C에서 다시 전달하려고 시도해도 동일하게 수행됩니다. Java 메모리를 소비해야합니다. 픽셀 당 더 적은 공간 (예 : RGB_565 또는 ARGB_4444)을 차지하는 비트 맵 형식을 고려해보십시오.

+0

내 데이터에 약 3000 x 5000 픽셀의 비트 맵이 포함되어 있습니다. 차이점 Bitmap.Config를 사용해 보았습니다. 행운이 없습니다. –

+0

그것은 꽤 큽니다. 너는 그걸 전부 그리지 않을거야, 그렇지? 어쨌든 C로 자른 다음 Java에 필요한 부분 만 Java로 다시 전달하는 것을 고려하십시오. –

+0

사실, 나는 줌/팬 기능으로 누구의 이미지를 표시 할 것입니다. 나는 (네이티브 코드로) 스케일을 줄이려고했는데 이미지 품질의 저하와 함께 작동합니다. 네이티브 코드에서 이미지를 Bitmap 객체로 직접 변환 할 수있는 방법이 있습니까? –

관련 문제