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

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。