2013-07-23 2 views
1

휴대 전화의 저장소에서 비트 맵을 가져 오는 방법에는 여러 가지가있는 것처럼 보입니다.휴대 전화 저장소에서 비트 맵을 가져오고 크기를 조정하는 가장 좋은 방법

MediaStore 쿼리를 사용하여 모든 이미지의 데이터를 읽고 있으므로 경로와 imageId를 메모리에 저장합니다. 그런 다음 나중에 이미지의 작은 축소판을 업로드하려는 경우 다음 중 하나를 수행 할 수 있습니다.

1) 이미지 ID를 기반으로 축소판/소형 종류에 대한 mediastore를 쿼리 한 다음 내 크기에 맞게 축소 된 비트 맵을 만듭니다 정확한 요구 (마이크로/미니 정확한 크기가 아닌 경우)

Bitmap bm = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(),  imageId, MediaStore.Images.Thumbnails.MINI_KIND, null); 
Bitmap.createScaledBitmap(bm, (int)newWidth, (int)newHeight, true); 

또는

2

)는 파일 위치에서 비트 맵을 가져오고 그

Bitmap bitmap = BitmapFactory.decodeFile(url); 
Bitmap.createScaledBitmap(bitmap, (int)newWidth, (int)newHeight, true); 
에서 스케일 맵을 만들

원본 크기 이미지를 크기 조정 된 비트 맵을 만드는 것보다 createScaledBitmap 프로세스를 더 빨리 끝낼 수있는 mediastore에서 썸네일 생성이 빠를 것이라고 생각했기 때문에 원래 # 1을 수행했습니다. 최선의 방법이 있습니까? 아니면이 차이가 완전히 무시할 수 있습니까?

답변

1

저는 전문가 아니지만 두 가지의 차이는 무시해도 좋을 것입니다. 유일한 차이점은 비트 맵에서 축소판 대 스케일의 비율을 조정하는 데 걸리는 시간이 될 것입니다. 그리고 어느 쪽 이던지 나노 세컨드에 대해 이야기하고 있다고 생각합니다.

솔직히 전체 크기 이미지에서로드 한 다음 샘플링을 다운하는 대신 메모리 사용을 위해 # 1을 사용하는 것이 좋습니다. 필요한 경우 축소판에서 크기를 조정하고 크기를 조정합니다.

+0

정확히 내가 생각하고 있었던 것. 차이를 만들 수있는 누락 된 것이 있는지 확실하지 않았습니다. – pat