2011-01-18 2 views
1

내 안드로이드 프로젝트에서 JPEG 이미지의 각각의 개별 픽셀에 대한 액세스 권한이 필요합니다. 이미지가 내장 된 사진 응용 프로그램으로 생성되었습니다. JPEG를 Bitmap 클래스 인스턴스로 변환하려고 시도했지만 OutOfMemoryException이 발생했습니다. 이 문제에 대한 정보를 검색 한 후 다음 해결책을 찾았습니다 : 이미지 크기 조정! 그러나 이미지의 품질은 프로젝트에서 중요하며 크기를 조정할 수 없습니다. 각 픽셀에 액세스 할 수있는 방법이 있습니까?안드로이드에서 JPEG 이미지의 개별 픽셀에 대한 액세스

+0

는 [이 질문]에 대한 내 대답을 참조하십시오 [1] [1] : http://stackoverflow.com/questions/4728374/opening-jpegs-on-android-i-get-an- outofmemoryexception –

답변

1

이미지가 너무 크고 품질이 중요하다면 가장 좋은 방법은 자신의 클래스를 사용하여 영역 (예 : 50 * 50 픽셀)에서 이미지를 자르거나 만드는 것입니다. 몇 가지 jpeg 정보 클래스가 있습니다. jpeg 파일 작업 방법을 이해하는 데 도움이되는 인터넷.

BufferedImage를 사용해 보셨나요? (SDK에 없지만 사용 가능할 수도 있음)

0

jpeg의 특성상 단일 픽셀 값을 얻는 것이 매우 어렵습니다. 주된 이유는 데이터가 바이트 정렬되지 않았고 또 다른 이유는 모든 것이 8x16, 16x8 및 8x8 크기 일 수있는 블록으로 인코딩된다는 것입니다. 또한 채도 값의 서브 샘플링을 처리해야합니다.

이미지에 다시 마커가 포함되어있는 경우 픽셀 값을 가져 오기 전에 전체 이미지를 디코딩 할 필요가 없도록 이미지로 건너 뛸 수 있습니다.

+0

이것은 의미가 없습니다. jpg는 블록으로 인코딩 될 수 있지만 jpg의 디코딩은 모든 픽셀이 배열을 채우도록 수행 될 수 있습니다. 결국 화면은 픽셀 배열에 지나지 않습니다. – AndroidDev

+0

OP는 처음 디코딩하지 않고 jpeg 크기를 조정할 수있는 방법이 있는지 알고 싶었습니다. 이렇게하려면 jpeg의 임의의 픽셀에 액세스해야합니다. 이것은 이유가 있기 때문에하기 어렵습니다. 미안해 너에게 이해가 가지 않는다. – onemasse

관련 문제