2010-04-18 6 views
1

큰 이미지 파일을 J2ME 응용 프로그램에 표시하려고합니다. 그러나 이미지 파일이 너무 클 경우 Image 인스턴스를 만들고 심지어 OutOfMemory 예외를 얻을 수 없다는 것을 알았습니다.J2ME의 큰 이미지 파일에서 엄지 손가락을 만드는 방법은 무엇입니까?

이미지 파일을 작은 청크로 읽고 사용자에게 표시 할 미리보기 이미지를 만들 수 있습니까?
이렇게 할 방법이 있습니까? 아니면 응용 프로그램에 이미지 파일을 표시하는 다른 방법이 있습니까?
감사합니다.

답변

1

시도하려는 내용과 응용 프로그램을 실행할 핸드셋에 따라 시도 할 사항이 많습니다.

이미지가 MIDlet JAR 파일에 패키지되어있는 경우 이미지를 이미지로로드하기 전에 데이터의 압축을 풀어야하기 때문에 MIDP 런타임의 기능을 제어 할 수 없습니다. 이 경우, 나는 더 작은 이미지를 단순히 포장하는 것이 좋습니다. 픽셀 수를 줄이거 나 각 픽셀을 인코딩하는 데 사용되는 바이트 수를 줄이십시오.

GCF 기반 InputStream (파일, 네트워크 ...)에서 이미지 바이트를 읽을 수 있으면 이미지 형식을 이해해야합니다 (BMP는 간단하고 JPEG는 적습니다 ...). 그러면 크기를 조정할 수 있습니다 변경 가능한 Image 객체로, 한 번에 하나의 청크를 사용하여 메모리를 적게 차지합니다.

이 경우 스케일링 알고리즘을 결정해야합니다. 파일의 32 비트 픽셀을 메모리의 8 비트 픽셀로 바꾸는 것은 휴대 전화의 LCDUI 구현이 잘못 작성된 경우 실제로 작동하지 않을 수 있습니다.

이미지의 내용에 따라 픽셀 열의 절반 만 제거하면 픽셀 선의 절반이 정확히 필요한 것일 수도 있고 너무 접근하기가 쉽지 않을 수도 있습니다. 기존 이미지 스케일링 알고리즘을보고 응용 프로그램에 하나씩 쓰고 싶을 수도 있습니다.

기본 LCDUI는 이미지를 화면에 표시하는 유일한 방법이 아닐 수도 있습니다. JSR-184, JSR-239, JSR-226 및 eSWT를 사용하면 핸드셋 LCDUI 구현과 완전히 독립적 일 수 있습니다.

마지막으로, 전화기 MIDP 런타임에서 화면 크기와 동일한 크기의 이미지를 2 개 이상 동시에 풀 컬러 깊이로 생성 할 수 없다면 지원하지 않기로 결정할 때가 있습니다. 그 특정 핸드셋.

관련 문제