Android拍照,剪切,并放入SD卡

jopen 10年前發布 | 35K 次閱讀 Android Android開發 移動開發

android拍照之后,先對圖片進行一次剪切,最后將圖片保存到指定的目錄。在項目需要用戶拍照,并對圖片進行剪切后,發送到服務器端做驗證。這里貼出來一個小例子,能夠實現基本的功能。文章最后會給出來demo。界面上就是一個點擊事件。

1.首先點擊事件中啟動拍照,這里寫死了圖片的名稱。實際上可以通過在公用的類中定義一個靜態變量來操作。

public void tackPhoto() {
    String status = Environment.getExternalStorageState();
    if (status.equals(Environment.MEDIA_MOUNTED)) {
        try {
            File filePath = Environment.getExternalStorageDirectory();
            Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                File f = new File(filePath, "test.jpg");
                Uri u = Uri.fromFile(f);
                intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, u);
                startActivityForResult(intent, FLAG_CHOOSE_PHONE);
            } catch (ActivityNotFoundException e) {
                e.printStackTrace();
            }
        }
    }
2.在onActivityResult方法中獲得值
@Override
       protected void onActivityResult (int requestCode, int resultCode, Intent data) {
             if (resultCode == RESULT_OK) {
                  File filePath = Environment.getExternalStorageDirectory();
                  File f = new File(filePath, "test.jpg");
                   if (requestCode == FLAG_CHOOSE_PHONE) {
                        Toast. makeText( this, "FLAG_CHOOSE_PHONE", Toast.LENGTH_SHORT )
                                    .show();
                        String path = f.getAbsolutePath();
                        Intent intent = new Intent();
                        intent.setAction( "com.android.camera.action.CROP" );
                        intent.setDataAndType(Uri. fromFile( newFile(path)), "image/*" );// mUri是已經選擇的圖片 Uri
                        intent.putExtra( "crop", "true");
                        intent.putExtra( "aspectX", 3); // 裁剪框比例
                        intent.putExtra( "aspectY", 3);
                        intent.putExtra( "outputX", 150); // 輸出圖片大小
                        intent.putExtra( "outputY", 150);
                        intent.putExtra( "return-data", true);
                        startActivityForResult(intent,FLAG_CROP_PHONE);
                  } else if (requestCode == FLAG_CROP_PHONE) {
                        Bitmap bmap = data.getParcelableExtra( "data");
                         if (bmap != null) {
                               try {
                                    bmap.compress(Bitmap.CompressFormat. JPEG, 0,
                                                 newFileOutputStream(f));
                              } catch (FileNotFoundException e) {
                                    e.printStackTrace();
                              }
                        }
                  }
            }
      }
3.最后要添加一些權限
< uses-permission android:name = "android.permission.CAMERA" />
<uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" />
下載地址: http://www.oschina.net/action/code/download?code=44069&id=61639
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!