2014-09-03 5 views
0

내 안드로이드 프로젝트에서 여기 내 코드입니다.안드로이드에서 바이트 배열을 사용하여 픽셀 색상을 얻는 방법

for (int x = 0; x < targetBitArray.length; x += weight) { 
    for (int y = 0; y < targetBitArray[x].length; y += weight) { 
     targetBitArray[x][y] = bmp.getPixel(x, y) == mSearchColor; 
    } 
} 

그러나이 코드는 많은 시간을 낭비합니다.

그래서 bitmap.getPixel()보다 더 빠른 방법을 찾아야합니다. 비트 맵에서 변환 된 바이트 배열을 사용하여 픽셀 색상을 얻으려고하는데 그럴 수 없습니다. Bitmap.getPixel()을 바꾸는 방법은 무엇입니까?

답변

3

각 Bitmap.getPixel 메서드 호출에는 많은 리소스가 필요하므로 코드 성능을 향상시키기 위해 요청 양을 줄여야합니다.

내 제안이다

  1. 예컨대 로컬 배열

따라 로컬 배열

  • 반복 처리에 Bitmap.getPixels 방법으로 화상 데이터 행 단위 읽기

    int [] rowData= new int [bitmapWidth]; 
    for (int row = 0; row < bitmapHeight; row ++) { 
        // Load row of pixels 
        bitmap.getPixels(rowData, 0, bitmapWidth, 0, row, bitmapWidth, 1); 
    
        for (int column = 0; column < bitmapWidth; column ++) { 
         targetBitArray[column][row] = rowData(column) == mSearchColor; 
        } 
    } 
    

    이 코드의 performace을위한 중대한 개선 될 것

  • 관련 문제