0

電話のメモリから画像を読み込もうとすると、メモリ不足エラー java/lang/OutOfMemoryError または nativedecodeImage が発生します。携帯電話のメモリには 12kd の画像もあれば、589kb または 600kb 程度の画像もあります。小さいサイズの画像はリストにフェッチされますが、大きいサイズの画像になると OOM エラーがスローされます..??

これは私のコードです

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);
 }        

エラーが発生するポイントは

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

誰でもこれについて何か考えがありますか。このことで数日間立ち往生しています。S40 デバイス Nokia 311 で作業しています。Netbeans MIDP 2.0

4

2 に答える 2

0

ほとんどの JavaME のみが有効なデバイスはその点で制限されており、そのサイズの画像をロードするためにできることは何もありません。

しかし、多分あなたはする必要はありません。

多くのカメラは、撮影した写真のサムネイル バージョンを生成し、このサムネイルを EXIF データ内に含めます。したがって、電話で写真のリストを表示する必要がある場合、写真全体をロードする必要はありません。ファイル内のexifデータからサムネイルデータをロードするだけです。

しかし、私はこれを簡単に試しただけでした。トリックを実行するはずのサンプルソースコードをオンラインでいくつか見つけましたが、ほとんど機能しませんでした。これはおそらく、私がテストした携帯電話がサムネイルをexifデータに保存しなかったためです. 多分アシャ311はそうですか?

于 2013-08-08T11:01:12.577 に答える