0
我要將多個位圖圖像合併爲一個jpeg圖像。Android:如何將多個位圖圖像合併爲一個大的jpeg圖像
我可以從多個位圖圖像(平鋪)製作大型.bmp文件。 我可以將它轉換爲JPEG格式的JPEG文件。
但是這個過程的速度很慢。 我在三星手機上測試了這個。
用平鋪的bmp圖像製作一個大的位圖大約需要15秒。 有什麼辦法可以解決這個問題嗎?
謝謝。
我要將多個位圖圖像合併爲一個jpeg圖像。Android:如何將多個位圖圖像合併爲一個大的jpeg圖像
我可以從多個位圖圖像(平鋪)製作大型.bmp文件。 我可以將它轉換爲JPEG格式的JPEG文件。
但是這個過程的速度很慢。 我在三星手機上測試了這個。
用平鋪的bmp圖像製作一個大的位圖大約需要15秒。 有什麼辦法可以解決這個問題嗎?
謝謝。
圖像處理的問題是,如果您沒有正確地做到這一點,最終會多次複製整個圖像。面臨的挑戰是儘量只爲圖像保留一個緩衝區。類似於以下內容將非常有效。
// 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 */);
謝謝。但是,位圖非常大。約2048 * 2048大小。 –
因此,Bitmap.create()將被壓縮。 –
我不知道如何逐步構建JPG,但這是最好的方法。否則,由於您正在使用'.bmp'文件,因此您可能不需要每像素完整的32位。嘗試使用ShortBuffer對象(http://developer.android.com/reference/java/nio/ShortBuffer.html)並使用Bitmap.copyFromBuffer()和Bitmap.Config.RGB_565。這將幫助您以每像素16位來表示位圖,並將內存消耗減半。我之前做過,但並不是那麼簡單。祝你好運! – Samuel