时间:2021-05-20
在一个应用中更换用户的头像,一般有拍照和从图库中选择照片两种方法,现在网上也有很多开源的,但是很多都太复杂。而 Android-crop 这个库比较小,代码不复杂,比较适合,但是它没有拍照这个功能,需要我们自己整合进去。
调用系统相机拍照
1、返回略缩图的拍照
重写 onActivityResult 方法,系统相机会返回略缩图
@Overrideprotected 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"); mImageView.setImageBitmap(imageBitmap); }}1.返回全图片
. 如果是全图片,一般都是存在手机的外部存储空间,这个时候需要读写外部的权限
在4.4 及其以上不需要 WRTE_EXTERNAL_STORAGE 权限,所以,我们添加了 Android: maxSdkVersion = “18”
. 因为是全图片,图片一般都会很大,我们不能再像上面一样全部数据返回,不然很容易就出现 OOM , 所以,启动拍照的时候设置一个指定路径保存图片,拍照成功之后就可以直接使用这个路径了
// 图片路径 private Uri mCurrentPhotoUri;// 拍照private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(mContext.getPackageManager()) != null) { File photoFile = null; try { photoFile = createImageFile(); } catch (IOException e) { e.printStackTrace(); } if (photoFile != null){ Uri photoUri = FileProvider.getUriForFile(mContext, "com.yxhuang.fileprovider", photoFile); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); mCurrentPhotoUri = photoUri; startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } } // 创建图片路径 private File createImageFile() throws IOException { String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; File storageDir = mContext.getExternalFilesDir(Environment.DIRECTORY_PICTURES); File image = File.createTempFile( imageFileName, ".jpg", storageDir ); return image; }在创建图片 uri 的时候,使用了 FileProvider, FileProvider 只是 ContentProvider 的一个子类。用于方便文件的共享。
FileProvider 需要一些配置
在 Manifext.xml 中在节点下
其中 authorities 的内容要与 FileProvider.getUriForFile()方法中的第二个参数相同。
同时也要对android:resource 进行配置
res/xml/file_paths.xml
使用 android-crop 开源库裁剪图片
Android-crop 是一个比较简单的图片裁剪库。具体使用看 GitHub 的 Demo. 我们这里结合拍照一起使用。
上面我们已经准备好拍照了,我们需要在 onActivityForResult() 方法中进行处理
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android实现图片拍照剪裁的方法。分享给大家供大家参考,具体如下:调用系统的裁剪工具对相册或者拍照的图片进行裁剪。startActivityf
本文介绍了Android编辑头像功能的简单实例,可以实现拍照,图片选取,裁剪。拍照publicstaticvoidstartCamera(Fragmentfra
前言Android7.0系统发布后,拿到能升级的nexus6P,就开始了7.0的适配。发现在Android7.0以上,在相机拍照和图片裁剪上,可能会碰到以下一些
本文实例讲述了Android编程实现调用系统图库与裁剪图片功能。分享给大家供大家参考,具体如下:在Android开发中,调用系统图库和裁剪照片是很常见的需求。相
Android通过Intent调用系统拍照程序出现图片太小的问题解决办法Intentit=newIntent("android.media.action.IMA