第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

更多內(nèi)存優(yōu)化版本的 Bitmap.createScaledBitmap?

更多內(nèi)存優(yōu)化版本的 Bitmap.createScaledBitmap?

慕森王 2023-03-17 14:11:39
我完全理解“過(guò)早的優(yōu)化是萬(wàn)惡之源”。但是,我已經(jīng)到了一個(gè)地步,我認(rèn)為我想做的優(yōu)化不能再被認(rèn)為是“過(guò)早的”。我正在編寫(xiě)一個(gè) Android 應(yīng)用程序,除其他外,它從 USB 設(shè)備流式傳輸實(shí)時(shí)圖像提要,使用 OpenCV 執(zhí)行一些圖像處理,將幀轉(zhuǎn)換為位圖,然后將該位圖實(shí)時(shí)渲染到 SurfaceView。我讓一切正常,(實(shí)時(shí)提要正確呈現(xiàn)到 SurfaceView)并且 Android Studio 的“Profiler”工具表明我已經(jīng)很好地完成了內(nèi)存管理(請(qǐng)注意,垃圾收集器不會(huì)在下面顯示的 10 秒內(nèi)運(yùn)行一次) :但是,因?yàn)槲伊魇絺鬏數(shù)膱D像分辨率較低 (320x180),當(dāng)我將它直接渲染到 SurfaceView 時(shí),它實(shí)際上最終在設(shè)備屏幕上非常小。因此,我決定在將位圖渲染到屏幕之前將位圖縮放到適合 SurfaceView 的最大尺寸。然而,在這樣做之后,我驚恐地發(fā)現(xiàn)內(nèi)存使用圖現(xiàn)在看起來(lái)很可怕!(垃圾收集器每秒運(yùn)行不止一次?。┮韵率窍嚓P(guān)的代碼片段:在縮放位圖之前(清理內(nèi)存圖):canvas = getHolder().lockCanvas();openCvMat = frameQueue.take();Utils.matToBitmap(openCvMat, bitmapFromMat);mat.release();canvas.drawColor(Color.BLACK);canvas.drawBitmap(bitmapFromMat, 0, 0, null);getHolder().unlockCanvasAndPost(canvas);縮放位圖后(可怕的內(nèi)存圖):canvas = getHolder().lockCanvas();openCvMat = frameQueue.take();Utils.matToBitmap(openCvMat, bitmapFromMat);mat.release();canvas.drawColor(Color.BLACK);Bitmap scaled = scaleBitmapToViewport(bitmapFromMat);canvas.drawBitmap(scaled, 0, 0, null);scaled.recycle();getHolder().unlockCanvasAndPost(canvas);scaleBitmapToViewport()方法:private Bitmap scaleBitmapToViewport(Bitmap bitmap){    //Landscape    if((canvas.getHeight() * aspectRatio) < canvas.getWidth())    {        return Bitmap.createScaledBitmap(bitmap, (int) Math.round(canvas.getHeight() * aspectRatio), canvas.getHeight(), true);    }    else //Portrait    {        return Bitmap.createScaledBitmap(bitmap, canvas.getWidth(), (int) Math.round(canvas.getWidth() / aspectRatio), true);    }}所以這似乎Bitmap.createScaledBitmap()是罪魁禍?zhǔn)住S姓l(shuí)知道另一種方法來(lái)完成同樣的事情,而不是讓垃圾收集器賺錢(qián)?
查看完整描述

1 回答

?
千萬(wàn)里不及你

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊

而不是像你正在做的那樣縮放位圖本身 - 你不能在繪圖時(shí)縮放嗎?

我正在查看canvas.drawBitmap(位圖位圖、Rect src、Rect dst、Paint paint)——請(qǐng)注意,它采用源矩形和目標(biāo)矩形。

您需要將源設(shè)置為您的(?。﹫D像尺寸,將目標(biāo)設(shè)置為表面尺寸。


查看完整回答
反對(duì) 回復(fù) 2023-03-17
  • 1 回答
  • 0 關(guān)注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)