2013-08-08 2 views
0

전화 memmory에서 이미지를로드하려고하면 오류가 발생합니다. errorjava/lang/OutOfMemoryError 또는 nativedecodeImage. 전화 메모리의 일부 이미지는 12kd이고 다른 이미지는 589kb 또는 600kb입니다. 작은 크기의 이미지는 목록으로 가져 오지만 큰 이미지의 경우에는 OOM 오류가 발생합니다 .. ?? 내가OutOfMemoryError를 해결하는 방법

image = Image.createImage(imageData, 0, length); 

사람이 이것에 대해 어떤 생각을 가지고 있는가에 오류가 얻을 곳

내 코드

FileConnection finalConnection; 
try 
    {  
     fc.close(); 
     finalConnection = (FileConnection) Connector.open(path, Connector.READ_WRITE); 
     if(finalConnection.exists()) 
     { 
      InputStream fis = finalConnection.openInputStream(); 
      long overallSize = finalConnection.fileSize(); 
      int length = 0; 
      byte[] imageData = new byte[0]; 
      while (length < overallSize) 
      { 
       byte[] data = new byte[CHUNK_SIZE]; 
       int readAmount = fis.read(data, 0, CHUNK_SIZE); 
       byte[] newImageData = new byte[imageData.length + CHUNK_SIZE]; 
       System.arraycopy(imageData, 0, newImageData, 0, length); 
       System.arraycopy(data, 0, newImageData, length, readAmount); 
       imageData = newImageData; 
       length += readAmount; 
      } 
      fis.close(); 
      finalConnection.close(); 
      System.out.println("LENGTH IS " + length); 
      if (length > 0) 
      {      
       image = Image.createImage(imageData, 0, length); 

      } 
     } 
     else 
     { 
      System.out.println("NO PATH FOR IMAGE"); 
     } 
    } 
catch (Exception e) 
    { 
     System.out.println("Image.createImage(imageData, 0, length) " +e.toString()); 
    } 
catch(Error e) 
{ 
    System.out.println("Image.createImage " + e); 
}   

점이다. 며칠 동안이 물건에 붙어 있습니다. S40 장치에서 일하고 있습니다. Nokia 311. Netbeans MIDP 2.0

답변

0

단서는 예외입니다 ... 여는 이미지가 너무 커서 메모리에 저장할 수 없습니다. 이미지의 압축 된 크기가 반드시 보유 할 수 있는지 여부를 나타내는 것은 아니라는 것을 명심하십시오. 사실 픽셀 수와 관련이 있습니다.

너무 큰 경우에는 할 수있는 일이 많지 않습니다 ... 화면에 이미지를 표시하려면 축소하기 전에 이미지를 메모리에로드하기 전에 먼저 처리해야합니다.

0

대부분의 JavaME 전용 기기는 이와 관련하여 제한되어 있으므로 이미지를로드 할 수있는 방법은 없습니다.

하지만 어쩌면 필요하지 않을 수도 있습니다.

많은 카메라는 찍은 사진의 축소판 버전을 생성하고이 축소판을 EXIF ​​데이터에 포함시킵니다. 따라서 휴대 전화에 사진 목록을 표시해야하는 경우 전체 사진을로드하지 않아도됩니다. 파일의 exif 데이터에서 미리보기 이미지 데이터를로드하기 만하면됩니다.

나는이 날을 간단히 실험했다. 그 트릭을하기로되어있는 몇 가지 온라인 소스 코드 예제를 찾았지만 거의 작동하지 않았습니다. 이것은 아마도 내가 테스트 한 전화가 exif 데이터의 미리보기 이미지를 저장하지 않았기 때문일 수도 있습니다. 어쩌면 아샤 311은?

관련 문제