2012-05-18 4 views
0

몇 가지 장치에서 메모리가 부족한 페인팅 응용 프로그램이 있습니다. (NDK를 사용하여 둘 이상의 비트 맵을 병합하는 방법은 무엇입니까?

문제는 화면 크기가 비트 맵이고 메모리에 2 또는 3 개의 이미지를로드하는 것입니다. 그래서 저는 3 개의 이미지를 병합하기 위해 캔버스에 붙어있는 빈 비트 맵을 만듭니다. 그래서 많은 비트 맵을 만들 수 있습니다 ...

내 목표는 NDK를 사용하여 파일에서 이미지를로드하고 하나의 비트 맵만 반환하는 것입니다. 그럼 기본적으로 자바에서 빈 이미지를 만들고 NDK에 객체를 전달하면 장치에 사용 된 메모리의 양이 줄어들 것입니다. 적어도 이론적으로는 ...

첫 번째 p 내가 직면하고있는 문제는 파일에서 PNG 이미지를 디코딩하는 것입니다. 어떻게하면 NDK를 통해이 작업을 수행 할 수 있습니까? JNI를 통해 BitmapFactory를 사용해야합니까?

더 큰 질문보다 ARGB 비트 맵을 어떻게 병합합니까?

+0

NDK 다운로드의 비트 맵 - 플라즈마 예를 살펴 보는 것이 좋습니다. 비슷한 소리를냅니다 (네이티브 함수를 통해 비트 맵을로드하고 조작합니다). – Turnsole

+0

그래, 내가 그 코드를 기초로 사용하려고하고 있었다. 주요 거래는 decode png가 데이터를 전달 된 빈 비트 맵에 병합하는 것입니다. – Jona

답변

0

NDK에 어떤 이미지 조작 기능이 내장되어 있는지 잘 모르겠지만 OpenCV 라이브러리는 기본 코드에서 사용하기 위해 포함될 수 있습니다. 이는 이전의 친숙성 때문에 주로 사용되었지만 실제로는 좋은).

여기에 OpenCV 4 Android 프로젝트가 있습니다. 여기에 당신이 open a PNG 일 것입니다.

+0

라이브러리를 살펴 보았지만 픽셀 데이터를 병합 할 수 있는지 확실하지 않습니다. 나는자를 수 있고 크기를 재조합 할 수 있음을 안다. – Jona

+0

어떤 종류의 병합을 원하는지 잘 모르겠지만 여기에 블렌딩이있다 : http://opencv.itseez.com/doc/tutorials/core/adding_images/adding_images. html. 상황에 따라 자신 만의 픽셀 조작 알고리즘을 작성하고 싶지만 여기에도 일반적인 행렬 조작 방법이 있습니다. http://opencv.itseez.com/modules/core/doc/operations_on_arrays.html. – Turnsole

+0

OpenCV는 그렇게 할 것 같습니다 ... 나는 그것으로 몇 가지를 시도 할 것입니다. – Jona

관련 문제