91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android開發實現ImageView加載攝像頭拍攝的大圖功能

發布時間:2020-10-13 11:19:34 來源:腳本之家 閱讀:189 作者:AAA啊哈 欄目:移動開發

本文實例講述了Android開發實現ImageView加載攝像頭拍攝的大圖功能。分享給大家供大家參考,具體如下:

這個方法是從官方demo中摘錄的,在此記錄學習。

權限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature
  android:name="android.hardware.camera2"
  android:required="false" />

另:關于權限控制還可參考:Android Manifest功能與權限描述大全

設置變量保存文件存儲路徑

private String mCurrentPhotoPath;
/**
* 拍照flag
*/
private static final int REQUEST_IMAGE_CAPTURE_O = 2;

創建存儲路徑及文件名

 /**
* 創建拍攝的圖片的存儲路徑及文件名
* @return
* @throws IOException
*/
private File createImageFile() throws IOException{
  String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
  String imageFileName = "JPEG_" + timeStamp + "_";
  File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
  Log.d("TrainingFirstActivity", "storageDir:" + storageDir);
  File image = File.createTempFile(imageFileName, ".jpg", storageDir);
  mCurrentPhotoPath = image.getAbsolutePath();
  Log.d("image.getAbsolutePath()", image.getAbsolutePath() + "");
  return image;
}

拍攝圖片并保存

Intent takePictureOintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureOintent.resolveActivity(getPackageManager()) != null){
 File photoFile = null;
 try {
  photoFile = createImageFile();
 } catch (IOException e) {
  e.printStackTrace();
 }
 if (photoFile != null){
  takePictureOintent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
  startActivityForResult(takePictureOintent, REQUEST_IMAGE_CAPTURE_O);
 }
}

處理并壓縮拍照結果,takePhotoThenToShowImg是一個ImageView控件

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == REQUEST_IMAGE_CAPTURE_O && resultCode == RESULT_OK){
   int targetW = takePhotoThenToShowImg.getWidth();
   int targetH = takePhotoThenToShowImg.getHeight();
  /* Get the size of the image */
   BitmapFactory.Options bmOptions = new BitmapFactory.Options();
   bmOptions.inJustDecodeBounds = true;
   BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
   int photoW = bmOptions.outWidth;
   int photoH = bmOptions.outHeight;
  /* Figure out which way needs to be reduced less */
   int scaleFactor = 1;
   if ((targetW > 0) || (targetH > 0)) {
    scaleFactor = Math.min(photoW/targetW, photoH/targetH);
   }
  /* Set bitmap options to scale the image decode target */
   bmOptions.inJustDecodeBounds = false;
   bmOptions.inSampleSize = scaleFactor;
   bmOptions.inPurgeable = true;
  /* Decode the JPEG file into a Bitmap */
   Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
  /* Associate the Bitmap to the ImageView */
   takePhotoThenToShowImg.setImageBitmap(bitmap);
   galleryAddPic();
  }
}

最后可以將拍攝到的照片添加到Media Provider的數據庫中,以便圖庫或者其他程序讀取照片

/**
* 將拍攝到的照片添加到Media Provider的數據庫中
*/
private void galleryAddPic(){
  Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
  File f = new File(mCurrentPhotoPath);
  Uri contentUri = Uri.fromFile(f);
  mediaScanIntent.setData(contentUri);
  this.sendBroadcast(mediaScanIntent);
}

如果只需要縮略圖的話,只要調攝像頭拍攝直接處理結果就行

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK){//展示圖片
   Bundle extras = data.getExtras();
   Bitmap imageBitmap = (Bitmap) extras.get("data");
   takePhotoThenToShowImg.setImageBitmap(imageBitmap);
  }
}

更多關于Android相關內容感興趣的讀者可查看本站專題:《Android拍照與圖片處理技巧總結》、《Android圖形與圖像處理技巧總結》、《Android開發入門與進階教程》、《Android調試技巧與常見問題解決方法匯總》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結》

希望本文所述對大家Android程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

健康| 龙里县| 仁寿县| 霍林郭勒市| 新泰市| 涟水县| 海盐县| 长阳| 天峨县| 吉首市| 霍林郭勒市| 资阳市| 孝昌县| 如东县| 日照市| 新和县| 周宁县| 简阳市| 卢龙县| 梅河口市| 威远县| 和政县| 武山县| 勃利县| 晋城| 教育| 兴文县| 资中县| 定远县| 辽阳市| 宜兰县| 许昌县| 望奎县| 黄陵县| 德化县| 西青区| 耒阳市| 金秀| 无为县| 重庆市| 烟台市|