安卓開發中的圖片處理

來源:互聯網
上載者:User

圖片無限放大,不模糊,圖片移動,仿微信圖片放大

備忘:本文關鍵內容是“OOM(Out Of Memory)異常",跟 “移動時的截圖起點規則”內容,其他部分沒看也可以看的懂

寫此程式背景

看到微信的圖片瀏覽的強大功能,於是自己寫了一個。原則上可以無限放大,但是放大部分像素必須有原圖片的1個像素,最小也不能小於1*1 像素。

思路:

功能解剖:

縮放:微信的縮放能縮放到使用者滿意的範圍。(放大不會超過max倍,縮小不會超過min)

移動:當圖片高與寬小於螢幕時,能移動圖 片到任意位置。當高或寬大於螢幕時,移動圖片則會截取圖片某一模組放大滿屏顯示。

最重要的一點就是圖片放大時看不出來圖片變模糊

解剖雛形:

假設用系統內建 Matrix函數來控制放大縮小。

縮小:    可以縮小很小倍,當不易控制倍數(如1.25倍,但Matrix不會那麼精確)

放大:但放大超出螢幕時,Bitmap.createBitmap會在記憶體 中建立一個很大的圖(或記憶體超出系統設定的值或寬高超出螢幕),導致顯存或記憶體不足。

因為上條放大會出現問題所以本方案絕對不行。

解剖過度:

那麼要有那麼一 種縮放方法滿足下麵條件

一、能幾乎精確的縮小到某一個倍數

二、放大時記憶體不會溢出

基於縮放的截取方法想出以下移動方案

一、當放大時移動時計算某個參 考點在圖上移動的位置所佔比列(x,y),高寬為螢幕高度/倍數

二、當縮小的圖在螢幕範圍之內,那麼移動的效果通過移動ImageView的位置實現

方案:因為縮放的關鍵是放大 ,所以可以考慮放大時用截取一段圖*n倍不會溢出的圖

截圖方案: 一、看到截取就想到用畫布canvas解決(於是建立了一個MyBitMap類)能截永遠不會記憶體溢出的放大圖。並且映像不 會模糊(canvas優秀之處)。

補充:OOM(Out Of Memory)異常

1.放大時不模糊的實現:利用canvas擷取放大後的圖,就能解決安常規放大後模糊的現狀。

2.圖片不 溢出的實現:在canvas放大時限制圖片的大小不超出螢幕就行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.