Android——Nv21高效率轉(zhuǎn)Bitmap

查找問題

最近在項目中遇到將攝像頭數(shù)據(jù)處理后轉(zhuǎn)Bitmap的內(nèi)存溢出問題睛廊,大概運行到七八個小時后形真,就出現(xiàn)了內(nèi)存溢出,后來看了一下錯誤提示發(fā)現(xiàn)

bitmap = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());

這個地方會導(dǎo)致出現(xiàn)問題超全,故對此需要進行優(yōu)化咆霜。

優(yōu)化之前

首先看一下原先的處理方式

private static Bitmap nv21ToBitmap(byte[] nv21, int width, int height) {
 Bitmap bitmap = null;
 try {
 YuvImage image = new YuvImage(nv21, ImageFormat.NV21, width, height, null);
 ByteArrayOutputStream stream = new ByteArrayOutputStream();
 image.compressToJpeg(new Rect(0, 0, width, height), 80, stream);
 bitmap = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());
 stream.close();
 } catch (IOException e) {
 e.printStackTrace();
 }
 return bitmap;
 }

優(yōu)化之后

優(yōu)化后的處理如下:

package com.cdigi.facedep.util;
import android.content.Context;
import android.graphics.Bitmap;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicYuvToRGB;
import android.renderscript.Type;
/**
 * Created by caydencui on 2018/12/7.
 */
public class NV21ToBitmap {
 private RenderScript rs;
 private ScriptIntrinsicYuvToRGB yuvToRgbIntrinsic;
 private Type.Builder yuvType, rgbaType;
 private Allocation in, out;
 public NV21ToBitmap(Context context) {
 rs = RenderScript.create(context);
 yuvToRgbIntrinsic = ScriptIntrinsicYuvToRGB.create(rs, Element.U8_4(rs));
 }
 public Bitmap nv21ToBitmap(byte[] nv21, int width, int height){
 if (yuvType == null){
 yuvType = new Type.Builder(rs, Element.U8(rs)).setX(nv21.length);
 in = Allocation.createTyped(rs, yuvType.create(), Allocation.USAGE_SCRIPT);
 rgbaType = new Type.Builder(rs, Element.RGBA_8888(rs)).setX(width).setY(height);
 out = Allocation.createTyped(rs, rgbaType.create(), Allocation.USAGE_SCRIPT);
 }
 in.copyFrom(nv21);
 yuvToRgbIntrinsic.setInput(in);
 yuvToRgbIntrinsic.forEach(out);
 Bitmap bmpout = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
 out.copyTo(bmpout);
 return bmpout;
 }
}

優(yōu)化對比

對幀率要求不高時,一直使用BitmapFactory.decodeByteArray來進行處理嘶朱,耗時非扯昱鳎可觀,耗時達到60-80ms疏遏,在新方法下脉课,僅僅3~4ms就可完成對圖像的處理,需要使用Renderscript內(nèi)聯(lián)函數(shù)财异,可以更快的轉(zhuǎn)換為YUV圖像倘零,從而提供了性能,增加了程序的穩(wěn)定性.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末戳寸,一起剝皮案震驚了整個濱河市呈驶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疫鹊,老刑警劉巖俐东,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跌穗,死亡現(xiàn)場離奇詭異,居然都是意外死亡虏辫,警方通過查閱死者的電腦和手機蚌吸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砌庄,“玉大人羹唠,你說我怎么就攤上這事÷ィ” “怎么了佩微?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長萌焰。 經(jīng)常有香客問我哺眯,道長,這世上最難降的妖魔是什么扒俯? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任奶卓,我火速辦了婚禮,結(jié)果婚禮上撼玄,老公的妹妹穿的比我還像新娘夺姑。我一直安慰自己,他們只是感情好掌猛,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布盏浙。 她就那樣靜靜地躺著,像睡著了一般荔茬。 火紅的嫁衣襯著肌膚如雪废膘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天慕蔚,我揣著相機與錄音丐黄,去河邊找鬼。 笑死坊萝,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的许起。 我是一名探鬼主播十偶,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼园细!你這毒婦竟也來了惦积?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤猛频,失蹤者是張志新(化名)和其女友劉穎狮崩,沒想到半個月后蛛勉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡睦柴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年诽凌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坦敌。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡侣诵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狱窘,到底是詐尸還是另有隱情杜顺,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布蘸炸,位于F島的核電站躬络,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搭儒。R本人自食惡果不足惜穷当,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仗嗦。 院中可真熱鬧膘滨,春花似錦、人聲如沸稀拐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽德撬。三九已至铲咨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜓洪,已是汗流浹背纤勒。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留隆檀,地道東北人摇天。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像恐仑,于是被迫代替她去往敵國和親泉坐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容