Android 通過Intent調(diào)用系統(tǒng)拍照程序出現(xiàn)圖片太小的問題解決辦法
Android 通過Intent調(diào)用系統(tǒng)拍照程序出現(xiàn)圖片太小的問題解決辦法
Intent it = newIntent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(it, Activity.DEFAULT_KEYS_DIALER);
按下拍照鍵后,會返回到你的activity,所以你的activity要在onActivityResult方法里加一個處理,
protectedvoidonActivityResult(intrequestCode, intresultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try{
Bundle extras = data.getExtras();
Bitmap b = (Bitmap) extras.get("data");
take = b;
ImageView img = (ImageView)findViewById(R.id.image);
img.setImageBitmap(take);
}catch(Exception e){
}
}
但是這樣你會發(fā)現(xiàn)這個bitmap尺寸太小了。明顯是被壓縮過了,要像返回未被壓縮的照片,那么你要給調(diào)用系統(tǒng)拍照程序intent加上參數(shù),指定圖片輸出的位置。
Intent it = newIntent("android.media.action.IMAGE_CAPTURE");
it.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(newFile(F.SD_CARD_TEMP_PHOTO_PATH)));
startActivityForResult(it, Activity.DEFAULT_KEYS_DIALER);
這樣就是大圖片返回了。
protectedvoidonActivityResult(intrequestCode, intresultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try{
ImageView img = (ImageView)findViewById(R.id.image);
take = U.ResizeBitmap(U.getBitmapForFile(F.SD_CARD_TEMP_PHOTO_PATH), 640);
img.setImageBitmap(take);
imgflag = true;
}catch(Exception e){
}
}
另外注意一下,返回的那個bitmap會很大,你用完以后要把它回收掉,不然你很容易內(nèi)存報oom錯誤
public static Bitmap ResizeBitmap(Bitmap bitmap, intnewWidth) {
intwidth = bitmap.getWidth();
intheight = bitmap.getHeight();
floattemp = ((float) height) / ((float) width);
intnewHeight = (int) ((newWidth) * temp);
floatscaleWidth = ((float) newWidth) / width;
floatscaleHeight = ((float) newHeight) / height;
Matrix matrix = newMatrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// matrix.postRotate(45);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
bitmap.recycle();
return resizedBitmap;
}
以上就是Android 調(diào)用系統(tǒng)拍照出現(xiàn)問題的解決辦法,如有疑問大家請留言討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Android 6.0調(diào)用相機圖冊崩潰的完美解決方案
這篇文章主要介紹了Android 6.0調(diào)用相機圖冊崩潰的完美解決方案,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下2016-09-09
Android設(shè)置TextView首行縮進示例代碼
使用過word的都會知道,在文字排版的時候經(jīng)常要設(shè)置首行縮進,這樣才會使排版更整齊,那么在Android中當(dāng)需要設(shè)置首行縮進的時候該腫么辦呢,下面一起來看看。2016-08-08
WindowManagerService服務(wù)是如何以堆棧的形式來組織窗口
我們知道,在Android系統(tǒng)中,Activity是以堆棧的形式組織在ActivityManagerService服務(wù)中的;在本文中,我們就詳細分析WindowManagerService服務(wù)是如何以堆棧的形式來組織窗口的2013-01-01
Android開發(fā)實現(xiàn)的簡單計算器功能【附完整demo源碼下載】
這篇文章主要介紹了Android開發(fā)實現(xiàn)的簡單計算器功能,結(jié)合實例形式分析了Android計算器的具體實現(xiàn)步驟與相關(guān)操作技巧,并附帶完整demo源碼供讀者下載參考,需要的朋友可以參考下2017-11-11
Android實現(xiàn)在線預(yù)覽office文檔的示例詳解
在移動端展示在線 Office 文檔(如 Word、Excel、PPT)是一項常見需求,這篇文章為大家重點介紹了兩種方案的實現(xiàn)方法,希望對大家有一定的幫助2025-04-04

