2012-03-10 12 views
2

ここに私のコードです:
ファイルファイル=新しいファイル(Jpegファイルのパスは700kbです);エラー:ビットマップサイズ画像をARGB_8888に変換するときにVMの予算を超過する

InputStream in = null; 

     try { 
    in = new BufferedInputStream(new  FileInputStream(file)); 
    } 
    catch (Exception e) { 
      // TODO: handle exception 
     } 
     bitmap =BitmapFactory.decodeStream(in); 
     bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); 

あなたはメモリ使用量を削減する必要があり、私はそのARGB_8888 image.Needヘルプ:(

+0

画像のサイズは? –

+0

1920x2560 bro .. – AsadYarKhan

+0

私はこの形式の画像をARGB_8888にする必要があります。私はtesseract OCRライブラリを使用しています。この形式でビットマップ画像が必要なので、画像をOCRすることができます.... – AsadYarKhan

答えて

2

を作りたい、このコピー行でエラーが発生します助けてください。

をあなたのコードからは、あなたが最初にそれをコピーし、あなたが試すことができますが、二つの大きなビットマップオブジェクトを作成することを意味する、それを1つのビットマップへのストリームをデコードし、次にコピーします。

をあなたはその後、デコードしている必要はありません

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inPreferredConfig = Bitmap.Config.ARGB_8888 
// You can try value larger than 1 
options.inSampleSize = 2 // If set to a value > 1, requests the decoder to subsample the  original image, returning a smaller image to save memory. 

// Decode bitmap 
bitmap = BitmapFactory.decodeStream(in, null, options) 

この場合、1つのビットマップしか作成されません。また、inSampleSizeを大きい値に設定すると、ロードされたビットマップサイズが小さくなります。

+0

Great Job MAN私の[this](http://stackoverflow.com/questions/9652863/selecting-the- rectangular-area-in-image)投稿にもThanxの進歩 – AsadYarKhan

関連する問題