最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android調(diào)用系統(tǒng)拍照裁剪圖片模糊的解決方法

 更新時(shí)間:2017年01月02日 13:14:21   作者:yuminfeng728  
這篇文章主要為大家詳細(xì)介紹了Android調(diào)用系統(tǒng)拍照裁剪圖片模糊的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在Android中,調(diào)用系統(tǒng)相機(jī)拍照時(shí),將會(huì)接收到返回的圖像數(shù)據(jù),但是這些圖片并不是全尺寸的圖像,而是系統(tǒng)給的縮略圖,當(dāng)對拍照的圖片進(jìn)行裁切后顯示時(shí),得到的卻是模糊的圖片。下面針對這個(gè)問題提出解決的方法。

首先,我們知道調(diào)用系統(tǒng)的裁切是通過Intent intent = new Intent(“com.android.camera.action.CROP”);

但是intent到底能夠攜帶哪些數(shù)據(jù)呢,都有什么含義呢,我們可以看到如下:

上面包含了所有可選的操作,其中有一些非常重要的參數(shù)。

intent.putExtra(“return-data”, true):表示裁剪后返回的數(shù)據(jù)為Bitmap,是存在內(nèi)存中的縮略圖,效果模糊。獲取的方式為,在Activity中的onActivityResult方法中:

Bundle bundle = data.getExtras();
Bitmap bitmap = bundle.getParcelable("data");

為了獲取到裁切后的原圖,我們選擇將剪切的圖片保存在本地,然后調(diào)用本地的圖片,并不直接返回Bitmap.

intent.putExtra("return-data", false);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

下面代碼實(shí)現(xiàn)拍照/剪切并進(jìn)行顯示的

 public static int TAKE_PHOTO_REQUEST_CODE = 1; //拍照
 public static int PHOTO_REQUEST_CUT = 2; //裁切
 public static int PHOTO_REQUEST_GALLERY = 3; //相冊
 public Uri imageUri;

 /**
  * 打開相機(jī)拍照
  */
 private void takePhotos() {

  imageUri = Uri.fromFile(getImageStoragePath(this));
  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  //指定照片存儲路徑
  intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
  startActivityForResult(intent,TAKE_PHOTO_REQUEST_CODE);
 }

  /**
  * 打開相冊選擇圖片
  */
 private void choicePicFromAlbum() {
  Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
  intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
  startActivityForResult(intent, PHOTO_REQUEST_GALLERY);
 }

  /**
  * 設(shè)置圖片保存路徑
  * @return
  */
 private File getImageStoragePath(Context context){
  if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
   File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES),"temp.jpg");
   return file;
  }
  return null;
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == TAKE_PHOTO_REQUEST_CODE){
   if (imageUri != null){
    startPhotoZoom(imageUri);
   }
  }else if (requestCode == PHOTO_REQUEST_CUT){
   if (imageUri != null) {
    Bitmap bitmap = decodeUriBitmap(imageUri);
    imageView.setImageBitmap(bitmap);
   }
  }else if (requestCode == PHOTO_REQUEST_GALLERY){
   if (data != null) {
    imageUri = data.getData();
    Bitmap bitmap = decodeUriBitmap(imageUri);
    imageView.setImageBitmap(bitmap);
   }
  }
 }

 private Bitmap decodeUriBitmap(Uri uri) {
  Bitmap bitmap = null;
  try {
   bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));
  } catch (FileNotFoundException e) {
   e.printStackTrace();
   return null;
  }
  return bitmap;
 }

 /**
  * 調(diào)用系統(tǒng)裁剪
  *
  * @param uri
  */
 public void startPhotoZoom(Uri uri) {
  Intent intent = new Intent("com.android.camera.action.CROP");

  intent.setDataAndType(uri, "image/*");
  // crop為true是設(shè)置在開啟的intent中設(shè)置顯示的view可以剪裁
  intent.putExtra("crop", "true");
  intent.putExtra("scale", true);
  // aspectX aspectY 是寬高的比例
  intent.putExtra("aspectX", 1);
  intent.putExtra("aspectY", 1);

  // outputX,outputY 是剪裁圖片的寬高
  intent.putExtra("outputX", 800);
  intent.putExtra("outputY", 800);

  //設(shè)置了true的話直接返回bitmap,可能會(huì)很占內(nèi)存
  intent.putExtra("return-data", false);
  //設(shè)置輸出的格式
  intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
  //設(shè)置輸出的地址
  intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
  //不啟用人臉識別
  intent.putExtra("noFaceDetection", true);
  startActivityForResult(intent, PHOTO_REQUEST_CUT);
 }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android MarkTipsView文字標(biāo)識控件使用方法

    Android MarkTipsView文字標(biāo)識控件使用方法

    這篇文章主要為大家詳細(xì)介紹了Android MarkTipsView文字標(biāo)識控件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Android利用WindowManager實(shí)現(xiàn)懸浮窗

    Android利用WindowManager實(shí)現(xiàn)懸浮窗

    這篇文章主要為大家詳細(xì)介紹了Android利用WindowManager實(shí)現(xiàn)懸浮窗效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android實(shí)現(xiàn)京東上滑效果

    Android實(shí)現(xiàn)京東上滑效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)京東上滑效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Android實(shí)現(xiàn)記事本功能

    Android實(shí)現(xiàn)記事本功能

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)記事本功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android permission denied原因歸納和解決辦法

    Android permission denied原因歸納和解決辦法

    大家好,本篇文章主要講的是Android permission denied原因歸納和解決辦法,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下哦
    2021-12-12
  • Android Studio 3.0中mipmap-anydpi-v26是什么東東

    Android Studio 3.0中mipmap-anydpi-v26是什么東東

    在Android Studio 3.0中一旦我們創(chuàng)建了一個(gè)項(xiàng)目,一個(gè)名為mipmap-anydpi-v26自動(dòng)創(chuàng)建的文件夾在res文件夾下。它究竟能干什么?為什么我們需要這個(gè)?我們在開發(fā)時(shí)該如何利用它,下面通過本文給大家介紹下
    2017-12-12
  • Android?Compose狀態(tài)改變動(dòng)畫animateXxxAsState使用詳解

    Android?Compose狀態(tài)改變動(dòng)畫animateXxxAsState使用詳解

    這篇文章主要為大家介紹了Android?Compose狀態(tài)改變動(dòng)畫animateXxxAsState使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 分析Android常見的內(nèi)存泄露和解決方案

    分析Android常見的內(nèi)存泄露和解決方案

    內(nèi)存泄漏(Memory Leak)是指程序中己動(dòng)態(tài)分配的堆內(nèi)存由于某種原因程序未釋放或無法釋放,造成系統(tǒng)內(nèi)存的浪費(fèi),導(dǎo)致程序運(yùn)行速度減慢甚至系統(tǒng)崩潰 (OOM) 等嚴(yán)重后果
    2021-06-06
  • Kotlin 集合函數(shù)map 和 first 的使用場景分析

    Kotlin 集合函數(shù)map 和 first 的使用場景分析

    Kotlin 提供了許多強(qiáng)大的集合操作函數(shù),其中 map 適用于轉(zhuǎn)換集合,first 適用于獲取符合條件的第一個(gè)元素,這篇文章給大家介紹Kotlin 集合函數(shù):map 和 first 的使用場景,感興趣的朋友一起看看吧
    2025-04-04
  • Android中ScrollView嵌套GridView的解決辦法

    Android中ScrollView嵌套GridView的解決辦法

    前些日子在開發(fā)中用到了需要ScrollView嵌套GridView的情況,由于這兩款控件都自帶滾動(dòng)條,當(dāng)他們碰到一起的時(shí)候便會(huì)出問題,即GridView會(huì)顯示不全。下面小編給大家分享下解決方案,需要的朋友可以參考下
    2017-04-04

最新評論

普格县| 枝江市| 穆棱市| 东至县| 陇川县| 长治县| 柳河县| 北票市| 宣汉县| 通渭县| 广西| 新竹市| 沙河市| 张掖市| 河津市| 交口县| 金川县| 皮山县| 蕉岭县| 鄄城县| 望都县| 司法| 报价| 海宁市| 敖汉旗| 洛阳市| 清河县| 铅山县| 武安市| 婺源县| 盐池县| 乐清市| 宕昌县| 峨山| 晋江市| 永胜县| 石泉县| 四平市| 奉新县| 宁都县| 绥宁县|