实现调用相机并裁剪,调用相册并裁剪的功能
来源:互联网 发布:盈建科软件的钢号 编辑:程序博客网 时间:2024/06/14 11:45
实现一个调用相机并裁剪,调用相册并裁剪的功能。
效果图
点击更换按钮会弹出一个对话框,选择拍照还是图库
布局文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="cn.edu.bzu.cn.myapp.MainActivity"> <ImageView android:id="@+id/iv1" android:src="@drawable/xiaoxin" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginTop="100dp" android:layout_centerHorizontal="true" /> <Button android:text="更换头像" android:layout_marginTop="30dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/iv1" android:layout_centerHorizontal="true" /></RelativeLayout>
用户交互代码
public static final int NONE = 0; public static final int PHOTOHRAPH = 1;// 拍照 public static final int PHOTOZOOM = 2; // 缩放 public static final int PHOTORESOULT = 3;// 结果 public static final String IMAGE_UNSPECIFIED = "image/*"; ImageView head_image_cut; Bitmap photo; Uri u; File pictureold; String picturePath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_head); head_image_cut=(CircleImageView)findViewById(R.id.iv1); }
//点击事件 public void cutPhoto(View view){ new AlertDialog.Builder(this) .setTitle("选择来源") .setItems(new String[]{"拍照", "图库"}, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0://拍照,调用系统相机 Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent2.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg"))); startActivityForResult(intent2, PHOTOHRAPH); break; case 1://图库,调用系统图库 Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, PHOTOZOOM); break; } } }).show(); }
调用回调函数onActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == NONE) return; // 拍照 if (requestCode == PHOTOHRAPH) { //设置文件保存路径这里放在跟目录下 pictureold = new File(Environment.getExternalStorageDirectory() + "/temp.jpg"); startPhotoZoom(Uri.fromFile(pictureold)); } if (requestCode == PHOTOZOOM && resultCode == RESULT_OK && null != data) { Uri selectedImage = data.getData();//获得图片的绝对路径 String[] filePathColumn = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); picturePath = cursor.getString(columnIndex); cursor.close(); pictureold=new File(picturePath); startPhotoZoom(Uri.fromFile(pictureold)); } // 处理结果 if (requestCode == PHOTORESOULT) { Bundle extras = data.getExtras(); if (extras != null) { photo = extras.getParcelable("data"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0 - 100)压缩文件 head_image_cut.setImageBitmap(photo);//将图片放在ImageView } }}
//调用系统的裁剪public void startPhotoZoom(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, IMAGE_UNSPECIFIED); intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 200); intent.putExtra("outputY", 200); intent.putExtra("return-data", true); startActivityForResult(intent, PHOTORESOULT); }
阅读全文
0 0
- 实现调用相机并裁剪,调用相册并裁剪的功能
- Android调用相机实现拍照并裁剪图片,调用手机中的相册图片并裁剪图片
- 调用相机相册+裁剪功能
- 调用相机,相册,裁剪
- Android调用相册或相机拍照选取照片并裁剪
- iOS 调用相机 ,相册获取图片 并裁剪为正方形
- Android调用相册或相机拍照选取照片并裁剪
- Android调用相册或相机拍照选取照片并裁剪
- 打开相册/相机 并裁剪
- 调用Android系统相册并裁剪图片
- android调用系统相机拍照并裁剪
- 调用手机相机拍照并裁剪相片
- 调用系统的照相,相册,裁剪功能--activity实现
- Android完美调用系统相机、相册以及裁剪功能
- 笔记111--调用相机并裁剪,从相册截图。及原理分析
- Android中调用系统相机、系统相册来获取图片,并裁剪图片。
- 在安卓开发中调用手机相册,相机,选择相片裁剪并上传
- 更换用户头像 调用手机相册或相机拍照 选择图片并裁剪
- FFMPEG H264/H265 编码延迟问题
- 【java面试】算法篇
- 使用@RestController,@ExceptionHandler和@Valid,把检验和异常处理从主要业务逻辑里面抽离出来
- JAVA读取文件路径
- 微信公众号分享图片显示不出来
- 实现调用相机并裁剪,调用相册并裁剪的功能
- 关于数据库的水平切分和垂直切分的一些概念(转)
- 设计模式 -- 组合模式的一次运用实践
- springBoot 学习
- 网页打不开,设置dns
- erp实施顾问
- svn更新出现冲突的解决方法
- how to patch
- linux网络协议栈内核分析