拍照/相冊選擇圖片剪切後設置爲頭像

在Android中,Intent觸發Camera程序,拍好照片後,將會返回數據,但是考慮到內存問題,Camera不會將全尺寸的圖像返回給調用的Activity,一般情況下,有可能返回的是縮略圖,比如120*160px。這是爲什麼呢?這不是一個Bug,而是經過精心設計的,卻對開發者不透明。

以我的小米手機爲例,攝像頭800W像素,根據我目前設置拍出來的圖片尺寸爲3200*2400px。有人說,那就返回唄,大不了耗1-2M的內存,不錯,這個尺寸的圖片確實只有1.8M左右的大小。但是你想不到的是,這個尺寸對應的Bitmap會耗光你應用程序的所有內存。Android出於安全性考慮,只會給你一個寒磣的縮略圖。

在Android2.3中,默認的Bitmap爲32位,類型是ARGB_8888,也就意味着一個像素點佔用4個字節的內存。我們來做一個簡單的計算題:3200*2400*4 bytes = 30M。

如此驚人的數字!哪怕你願意爲一張生命週期超不過10s的位圖願意耗費這麼巨大的內存,Android也不會答應的。

Mobile devices typically have constrained system resources. 

2 Android devices can have as little as 16MB of memory available to a single application. 

這是Android Doc的原文,雖然不同手機系統的廠商可能圍繞16M這個數字有微微的上調,但是這30M,一般的手機還真揮霍不起。也只有小米這種牛機,內存堪比個人PC,本着土財主般揮金如土的霸氣才能做到。

我也是Google到的,話說一般百度不了的問題,那就Google或者直接StackOverFlow,只不過得看英文罷了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章