自己寫代碼實現android的圖片裁剪。

來源:互聯網
上載者:User

               在Android開發中,有時候會用到圖片裁剪的功能,這時候我們往往會調用系統本身的裁剪(定義一個包含com.android.camera.action.CROP Action的Intent),雖然這樣很簡單,但是系統的裁剪在手機的適配性方面有很多問題,這個我們很難控制。由此,我們決定自己寫代碼搞定這個裁剪。這樣子的話出錯什麼的就比較好控制了。

         其實自己寫的話也比較簡單,那就是找到系統處理這個com.android.camera.action.CROP的地方,然後參考源碼自己搞定其中的問題。

         這裡我把遇到的問題記錄下:

         1、現在的手機拍照越來越強大了,好多手機拍的照片都會超過好幾M,這時候如果直接拿過來用就很容易引起系統OOM的問題。所以載入Bitmap的時候要先對bitmap進行處理。我這裡的處理方式就是先不加在bitmap,首先取得它的寬高,然後決定是否進行壓縮。這樣就可以保證我們的程式不會出問題。

         2、拍攝的照片由於相機底層異常的原因,有的手機有照片發生旋轉的情況發生,這時候首先在載入時對圖片進行旋轉一下。但是我們為了滿足使用者的需求,給使用者提供了旋轉圖片操作的權利,所以提供了旋轉的處理。

         3、對裁剪完成之後的result處理,系統代碼本身返回的是bitmap,這樣子是很容易引起問題的。最容易發生的系統異常就是android.os.transactiontoolargeexception。所以這裡我對代碼進行了處理,不再返回bitmap圖片了,首先將bitmap圖片放到緩衝裡,傳回一個Uri,這時候我們的應用程式通過Uri讀取這個圖片就可以了。

        還有其他的一些功能就不再這裡列出了,因為公司的代碼原因,給出一個demo。這個demo很好的反映了上面問題的處理方式。大家可以在此基礎上再擴充自己的功能,比如對裁剪圖象的特效處理等,這裡My Code就不再列出這些功能了。

       demo串連地址:http://download.csdn.net/detail/liuhanhan512/4898700

       這個資源要了積分,沒有積分的可以留個郵箱。

       

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.