當前位置:首頁 » 安卓系統 » androidbitmap處理

androidbitmap處理

發布時間: 2025-03-16 01:42:08

Ⅰ android中Bitmap存為一張圖片

可以用Bitmap.compress函數來把Bitmap對象保存成PNG或JPG文件,然後可以用BitmapFactory把文件中的數據讀進來再生成Bitmap對象。
保存的代碼大概類似於這樣:
try {
FileOutputStream out = new FileOutputStream(filename);
bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
} catch (Exception e) {
e.printStackTrace();
}
具體的可以去查Bitmap和BitmapFactory的幫助文檔。

Ⅱ android bitmap 圖片縮放問題

在使用Bitmap進行點陣圖讀取和顯示的時候需要注意在生成點陣圖時,系統會根據不同的情況來縮小、放大圖像。
當把圖片放到drawable文件夾中時,160密度的模擬器顯示的圖像有放大效果,240密度的模擬器顯示原尺寸的圖像。
當把圖片放到drawable-hdpi文件夾中時,160密度的模擬器顯示出的圖像有縮小效果,240密度的模擬器顯示原尺寸的圖像。
當把圖片放到drawable-mdpi文件夾中時,160密度的模擬器顯示原尺寸的圖像,240密度的模擬器顯示放大的圖像。
當把圖片放到drawable-ldpi文件夾中時,160、240密度的模擬器都顯示放大的圖片。
由此可以看出,在使用Bitmap顯示圖像時,一般應放在drawable-hdpi文件夾中,這樣可以根據屏幕的密度來調整圖像大小,比如再做游戲時,大屏幕的與小屏幕的手機中,人物或物體應該有大小之分。望求採納謝謝...

Ⅲ android中surfaceview下如何高效旋轉bitmap對象

在 Android 中,SurfaceView 是一個關鍵的組件,特別適合處理圖像流,比如實時視頻流或 OpenGL 場景。它的優勢在於它擁有自己的 Surface,可以與宿主窗口分離,獨立於應用窗口之外,因此在不同的線程中處理業務效率更高。SurfaceView 通過 UI 線程和渲染線程的「雙緩沖」機制來實現高效的界面刷新效果,使得畫面流暢。

為了更高效地處理圖像流,我們引入了 GLSurfaceView。它繼承自 SurfaceView,實現了 SurfaceHolder.Callback2 介面,擁有額外的 OpenGL 管理能力。GLSurfaceView 通過 OpenGL 在 GL 線程進行繪制,不阻塞主線程,並將結果輸出到 SurfaceView 的 Surface 上。這樣,GLSurfaceView 不僅擁有 SurfaceView 的所有特性,還具備 OpenGlES 的圖形處理能力,通過渲染器介面支持用戶自定義渲染器。

SurfaceTexture 是 SurfaceView 的擴展,它可以處理圖像流數據的二次處理,如 Camera 濾鏡或桌面特效。它將圖像流轉換為 GL 外部紋理,以便進行更精細的圖像處理。與 SurfaceView 不同,SurfaceTexture 不會創建獨立的窗口,而是將內容流作為紋理輸出,從而實現 Live preview 功能。

TextureView 是 SurfaceView 的進一步擴展,它將內容流直接投射到普通的 View 中,允許進行 Live preview。TextureView 的特點是它可以作為 View hierarchy 的一部分,與其他 View 一樣進行移動、旋轉、縮放和動畫。但需要注意的是,TextureView 必須在硬體加速的窗口中使用,內存消耗較大,並且有延遲。

總結來說,SurfaceView 直接輸出,擁有獨立 Surface,渲染可在單獨線程中進行,但不能變形或做動畫。SurfaceTexture 用於非直接輸出的內容流,提供了二次處理的機會,但有延遲和內存消耗問題。TextureView 將內容流作為外部紋理輸出,作為 View hierarchy 的一部分,內存消耗高,有延遲。

在 Android 7.0 之後,系統 SurfaceView 的性能可能優於 TextureView,特別是對於需要動畫效果的場景。而 TextureView 在某些特定場景下,比如視頻播放或相機應用,具有優勢。選擇合適的組件取決於具體應用需求。

更多關於 Android 的資源和文章,歡迎訪問以下鏈接:

點擊跳轉->Unity 一路向東

點擊跳轉->有意思又酷的網站網址

點擊跳轉->精緻神器軟體推薦

點擊跳轉->精品書籍圖譜

點擊跳轉->中國神話聯盟宇宙

點擊跳轉->Android 指南

Ⅳ Android開發中ImageView里的Bitmap很模糊,怎麼解決

背景和前景大小比列一定要一致,否則比列會把線條拉伸變得模糊

Ⅳ 在android開發中載入的圖片太大,有好幾十兆,應該怎麼辦

如果圖片太大會造成OOM內存溢出的錯誤,需要用Bitmap的壓縮機制。
解決方案:
1.使用BitmapFactory.decodeStream替代createBitmap方法
原因是該方法直讀取圖片位元組,調用JNI>>nativeDecodeAsset()來完成decode,無需再使用java層的createBitmap。

2.使用壓縮讀取技術
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(imageSdUri, options);
final int height = options.outHeight;
final int width = options.outWidth;
options.inSampleSize = 1;
int w = 320;
int h = 480;
h = w*height/width;//計算出寬高等比率
int a = options.outWidth/ w;
int b = options.outHeight / h;
options.inSampleSize = Math.max(a, b);
options.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeFile(imageSdUri, options);

3.及時釋放Bitamp
Bitmap對象在不使用時,我們應該先調用recycle()釋放內存,然後才它設置為null.雖然recycle()從源碼上看,調用它應該能立即釋放Bitmap的主要內存,但是測試結果顯示它並沒能立即釋放內存。但是我它應該還是能大大的加速Bitmap的主要內存的釋放。

Ⅵ android bitmap 浣跨敤鏃跺欐敞鎰忎粈涔

涓銆 闂棰樼殑鑳屾櫙鍜屾剰涔
鍦ˋndroid縐誨姩搴旂敤寮鍙戜腑錛屽笲itmap鐨勪笉灝忓績澶勭悊錛屽緢瀹規槗寮曡搗紼嬪簭鍐呭瓨絀洪棿鑰楀敖鑰屽艱嚧鐨勭▼搴忓穿婧冮棶棰樸傛瘮濡傛垜浠甯擱亣鍒扮殑闂棰橈細
java.lang.OutofMemoryError: bitmap size exceeds VM budget.
瀵艱嚧璇ラ棶棰樼殑鍑虹幇錛屼竴鑸鐢變互涓嬪嚑鏂歸潰鍘熷洜瀵艱嚧錛
寮曞姩璁懼囦竴鑸瀛樺偍絀洪棿闈炲父鏈夐檺銆傚綋鐒朵笉鍚岃懼囧垎閰嶇粰搴旂敤鐨勫唴瀛樼┖闂存槸涓嶅悓鐨勩備絾鐩稿逛笉浣嗘彁楂樼殑璁懼囧垎杈ㄧ巼鑰岃█錛屽唴瀛樼殑鍒嗛厤浠嶇劧鏄鐩稿圭揣寮犵殑銆
Bitmap瀵硅薄甯稿父鍗犵敤澶ч噺鐨勫唴瀛樼┖闂達紝姣斿傦細瀵逛簬2592*1936鐨勮懼囷紝濡傛灉閲囩敤ARGB_8888鐨勬牸寮忓姞杞藉浘鍍忥紝鍐呭瓨鍗犵敤灝嗚揪鍒19MB絀洪棿銆
鍦ˋnroid App涓緇忓父鐢ㄥ埌ListView錛孷iewPager絳夋帶浠訛紝榪欎簺鎺т歡甯鎬細鍖呭惈杈冨ぇ鏁伴噺鐨勫浘鐗囪祫婧愩
浜屻 闂棰樺強鍦烘櫙鍒嗘瀽
1 楂樻晥鍦板姞杞藉ぇ鍥劇墖銆
BitmapFactory綾繪彁渚涗簡涓浜涘姞杞藉浘鐗囩殑鏂規硶錛歞ecodeByteArray(), decodeFile(), decodeResource(), 絳夌瓑銆
涓轟簡閬垮厤鍗犵敤杈冨ぇ鍐呭瓨錛岀粡甯鎬嬌鐢˙itmapFactory.Options 綾伙紝璁劇疆inJustDecodeBounds灞炴т負true銆
//
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds =true;
BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
涓轟簡閬垮厤java.lang.OutOfMemory 鐨勫紓甯革紝鎴戜滑鍦ㄧ湡姝decode鍥劇墖涔嬪墠媯鏌ュ畠鐨勫昂瀵革紝闄ら潪浣犵『瀹氳繖涓鏁版嵁婧愭彁渚涗簡鍑嗙『鏃犺鐨勫浘鐗囦笖涓嶄細瀵艱嚧鍗犵敤榪囧氱殑鍐呭瓨銆
鍔犺澆涓涓鎸夋瘮渚嬬緝灝忕殑鐗堟湰鍒板唴瀛樹腑銆備緥濡傦紝濡傛灉鎶婁竴涓鍘熷浘鏄1024*768 pixel鐨勫浘鐗囨樉紺哄埌ImageView涓128*96 pixel鐨勭緝鐣ュ浘灝辨病鏈夊繀瑕佹妸鏁村紶鍥劇墖閮藉姞杞藉埌鍐呭瓨涓銆備負浜嗗憡璇夎В鐮佸櫒鍘誨姞杞戒竴涓杈冨皬鐨勫浘鐗囧埌鍐呭瓨錛岄渶瑕佸湪浣犵殑BitmapFactory.Options 涓璁劇疆 inSampleSize 涓簍rue 銆備緥濡, 涓涓鍒嗚鯨鐜囦負2048x1536 鐨勫浘鐗囷紝濡傛灉璁劇疆inSampleSize 涓4錛岄偅涔堜細浜у嚭涓涓澶ф備負512x384鐨勫浘鐗囥傚姞杞借繖寮犲皬鐨勫浘鐗囦粎浠呬嬌鐢ㄥぇ姒0.75MB錛屽傛灉鏄鍔犺澆鍏ㄥ浘閭d箞澶ф傝佽姳璐12MB(鍋囪綽itmap鐨勯厤緗鏄疉RGB_8888).
2 涓嶈佸湪涓葷嚎紼嬪勭悊鍥劇墖銆

浼楁墍鍛ㄧ煡鐨勯棶棰橈紝涓嶅啀璧樿堪銆
娉ㄦ剰涓ょ偣錛1. 涓轟簡淇濊瘉浣跨敤鐨勮祫婧愯兘琚鍥炴敹錛屽緩璁浣跨敤WeakReference, 浠ュ簲鐢ㄥ唴瀛樺唴瀛樼揣寮犳椂錛屽洖鏀墮儴鍒嗚祫婧愶紝淇濊瘉紼嬪簭榪涚▼涓嶈鏉姝匯
2. 閬垮厤寮傛ヤ換鍔$殑闀挎椂闂磋楁椂鎿嶄綔錛屽湪浠誨姟鎵ц岀粨鏉熷悗錛屽強鏃墮噴鏀捐祫婧愩
3 綆$悊Bitmap鍐呭瓨銆
鍦ˋndroid寮鍙戜腑錛屽姞杞戒竴涓鍥劇墖鍒扮晫闈㈠緢瀹規槗錛屼絾濡傛灉涓嬈″姞杞藉ぇ閲忓浘鐗囧氨澶嶆潅澶氫簡銆傚湪寰堝氭儏鍐典笅錛堟瘮濡傦細ListView,GridView鎴朧iewPager錛夛紝鑳藉熸粴鍔ㄧ殑緇勪歡闇瑕佸姞杞界殑鍥劇墖鍑犱箮鏄鏃犻檺澶氱殑銆
鏈変簺緇勪歡鐨刢hild view鍦ㄤ笉鏄劇ず鏃朵細鍥炴敹錛屽苟寰鐜浣跨敤錛屽傛灉娌℃湁浠諱綍瀵筨itmap鐨勬寔涔呭紩鐢ㄧ殑璇濓紝鍨冨溇鍥炴敹鍣ㄤ細閲婃斁浣犲姞杞界殑bitmap銆傝繖娌′粈涔堥棶棰橈紝浣嗗綋榪欎簺鍥劇墖鍐嶆℃樉紺虹殑鏃跺欙紝瑕佹兂閬垮厤閲嶅嶅勭悊榪欎簺鍥劇墖錛屼粠鑰岃揪鍒板姞杞芥祦鐣呯殑鏁堟灉錛屽氨瑕佷嬌鐢ㄥ唴瀛樼紦瀛樺拰鏈鍦扮紦瀛樹簡錛岃繖浜涚紦瀛樺彲浠ヨ╀綘蹇閫熷姞杞藉勭悊榪囩殑鍥劇墖銆
3.1 鍐呭瓨緙撳瓨
鍐呭瓨緙撳瓨浠ョ壓鐗插唴瀛樼殑浠d環錛屽甫鏉ュ揩閫熺殑鍥劇墖璁塊棶銆侺ruCache綾伙紙API Level 4涔嬪墠鍙浠ヤ嬌鐢⊿upport Library錛夐潪甯擱傚悎鍥劇墖緙撳瓨浠誨姟錛屽湪涓涓狶inkedHashMap涓淇濆瓨鐫瀵笲itmap鐨勫己寮曠敤錛屽綋緙撳瓨鏁伴噺瓚呰繃瀹瑰櫒瀹歸噺鏃訛紝鍒犻櫎鏈榪戞渶灝戜嬌鐢ㄧ殑鎴愬憳錛圠RU錛夈
娉ㄦ剰錛氬湪榪囧幓錛岄潪甯告祦琛岀敤SoftReference鎴朩eakReference鏉ュ疄鐜板浘鐗囩殑鍐呭瓨緙撳瓨錛屼絾鐜板湪涓嶅啀鎺ㄨ崘浣跨敤榪欎釜鏂規硶浜嗐傚洜涓轟粠Android 2.3 錛圓PI Level 9錛変箣鍚庯紝鍨冨溇鍥炴敹鍣ㄤ細鏇寸Н鏋佺殑鍥炴敹soft/weak鐨勫紩鐢錛岃繖灝嗗艱嚧浣跨敤soft/weak寮曠敤鐨勭紦瀛樺嚑涔庢病鏈夌紦瀛樻晥鏋溿傞『甯︿竴鎻愶紝鍦ˋndroid3.0錛圓PI Level 11錛変互鍓嶏紝bitmap鏄鍌ㄥ瓨鍦╪ative 鍐呭瓨涓鐨勶紝鎵浠ョ郴緇熶互涓嶅彲棰勮佺殑鏂瑰紡鏉ラ噴鏀綽itmap錛岃繖鍙鑳戒細瀵艱嚧鐭鏃墮棿瓚呰繃鍐呭瓨闄愬埗浠庤岄犳垚宕╂簝銆 鏀惰搗

熱點內容
控制演算法規律 發布:2025-03-16 04:54:17 瀏覽:959
tcl門鎖原始設置密碼是多少 發布:2025-03-16 04:52:37 瀏覽:984
如何給wifi加密碼 發布:2025-03-16 04:52:05 瀏覽:361
linux的yes 發布:2025-03-16 04:38:20 瀏覽:832
誅仙腳本吧 發布:2025-03-16 04:31:00 瀏覽:37
java選擇文件 發布:2025-03-16 04:29:20 瀏覽:825
android手機號碼獲取 發布:2025-03-16 04:14:42 瀏覽:873
為什麼沒有dns伺服器可以上網 發布:2025-03-16 04:13:04 瀏覽:647
電腦快速伺服器代碼怎麼查 發布:2025-03-16 03:58:26 瀏覽:111
電腦虛榮伺服器 發布:2025-03-16 03:56:48 瀏覽:116