2013-07-15 75 views
0

我要將多個位圖圖像合併爲一個jpeg圖像。Android:如何將多個位圖圖像合併爲一個大的jpeg圖像

我可以從多個位圖圖像(平鋪)製作大型.bmp文件。 我可以將它轉換爲JPEG格式的JPEG文件。

但是這個過程的速度很慢。 我在三星手機上測試了這個。

用平鋪的bmp圖像製作一個大的位圖大約需要15秒。 有什麼辦法可以解決這個問題嗎?

謝謝。

回答

0

圖像處理的問題是,如果您沒有正確地做到這一點,最終會多次複製整個圖像。面臨的挑戰是儘量只爲圖像保留一個緩衝區。類似於以下內容將非常有效。

// create one big bitmap 
Bitmap finalBitmap = Bitmap.create(finalWidht, finalHeight, Bitmap.Config.ARGB_8888); 
for(int i=0;i<numTilesWide;i++) { 
    for(int j=0;j<numTilesHigh;j++) { 
     int[] tilePixels = // load tile bitmap into this int array 
     // copy tile onto final bitmap 
     finalBitmap.setPixels(tilePixels, 0, tileWidth, i*tileWidth, j*tileHeight); 
    } 
} 
// write the image as a jpeg to the file 
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 50, /* file stream */); 
+0

謝謝。但是,位圖非常大。約2048 * 2048大小。 –

+0

因此,Bitmap.create()將被壓縮。 –

+0

我不知道如何逐步構建JPG,但這是最好的方法。否則,由於您正在使用'.bmp'文件,因此您可能不需要每像素完整的32位。嘗試使用ShortBuffer對象(http://developer.android.com/reference/java/nio/ShortBuffer.html)並使用Bitmap.copyFromBuffer()和Bitmap.Config.RGB_565。這將幫助您以每像素16位來表示位圖,並將內存消耗減半。我之前做過,但並不是那麼簡單。祝你好運! – Samuel

相關問題