2017-10-02 16 views
0

キャンバスからビットマップイメージを1つ以上作成していますが、メモリが不足しているため、ビットマップイメージを圧縮する場所がわかりません。いつビットマップを圧縮する必要がありますか

// create a bitmap from the canvas 
    canvas.drawBitmap(printOutBitmap, width, 0, null); 

    // should printOutBitmap be compressed here? 

    // Initialize a new ByteArrayStream 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 

    Bitmap[] imgs = new Bitmap[numImages]; 
    Bitmap bitmapImage; 

    // splitting the bitmaps 
    for (int i = 0 ; i < imgs.length; i++) 
    { 
     // create a single bitmap from the area of the original bitmap 
     bitmapImage = Bitmap.createBitmap(printOutBitmap, 0, y, printOutBitmap.getWidth(), h); 

     // the returned bitmap needs to be a predefined width/height 
     bitmapImage = Bitmap.createScaledBitmap(bitmapImage, width, height, false); 

     bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, stream); 
     imgs[i] = bitmapImage; 
    } 

私はprintOutBitmapを圧縮しましたが、メモリが不足していますが、すべてのビットマップを圧縮するには時間がかかります。どんな助けやベストプラクティスも大変ありがとうございます。ありがとうございました!

答えて

0

compress()は、圧縮形式(PNG、JPEG、WebP)でディスクにBitmapを保存します。それはではないのメモリ使用量を変更しますBitmap

ByteArrayOutputStreamcompress()の呼び出しを取り除きます。使用していないメモリを割り当てるだけです。

関連する問題