官方推荐的做法是使用 FileProvider 来实现,**下面来看一下怎么实现这个 APP 中常见的功能: 一般来说,我们通过拍照来获取图片有以下步骤: 调用系统相机拍照 --> 调用系统裁剪程序裁剪裁照片并输出到指定目录...--> 读取裁剪后的图片 获取从相册选择的图片: 调用系统图库 --> 得到选择的图片的 Uri 并裁剪图片然后输出到指定目录 --> 读取裁剪后的图片 这里可能有些小伙伴会问了,为什么要调用系统的裁剪程序裁剪照片呢...因为现在的手机大多数像素比较高,拍出来的照片比较大,如果直接读取拍照后的照片,那么可能会发生栈溢出(就是应用内存不够用)。因此要将图片裁剪之后再读取。..." android:layout_height="wrap_content" android:text="拍照获取图片"/> <Button android...下面是上面例子的源码: Android 中拍照、相册选择、裁剪照片(兼容Android 7.0) 这里是 Github 地址,没积分的看这里 谢谢观看。。。
/btn_style_alert_dialog_button" android:text="拍照" android:textStyle="bold" /> 拍照的结果-->去裁剪 PhotoUtilChange.onPhotoFromCamera(MainActivity.this, CODE_ZOOM_PHOTOT...tempFile.getAbsolutePath(), 1, 1); break; case CODE_PICK_PHOTO://从相册选择 //2.处理从相册选择的结果-->去裁剪...tempFile.getAbsolutePath(), data, 50, 50); break; case CODE_ZOOM_PHOTOT://裁剪...//3.裁剪完成 Bitmap zoomBitMap = PhotoUtilChange.getZoomBitMap(data, MainActivity.this
是这种,客户须要做一个图片上传的功能,这个图片须要裁剪。一般而言,这东西用系统自带的裁剪就搞定了。但是客户不,他要能够自由裁剪,就是长宽比不固定,想裁成什么比例就裁成什么比例,我一听,蛋都碎了。 ...图片裁剪的功能系统自带了,和我的需求仅仅有一点不一样,就是它是固定宽高比的,设定了宽高比就不能再改变,而我须要自由宽高比。好吧,既然仅仅有这一点不一样,那给他改改即可了。 ...但是找了一圈,仅仅有一个哥哥自己写了一个自己定义裁剪的功能。跑了一下,基本功能能够实现,但是太Ugly了,并且不太稳定,有一些适配没有做好。想想还是自己改源代码好了,嗯,就这样。 ...下载gallery的源代码,抽取裁剪功能的代码,如图 这基本就好了,然后CropImage.java里面有叉叉,自己改下就好了。...然后怎么让他自由裁剪呢,看下mAspectX变量的使用,源代码里面用mAspectX和mAspectY来做宽高比计算的,我们就把他计算宽高比的地方凝视掉就好了。
; 8 import android.util.Log; 9 import android.view.View; 10 import android.widget.Button; 11 import...android.widget.FrameLayout; 12 import android.app.Activity; 13 import android.content.Context; 14...; import android.hardware.Camera; import android.util.Log; import android.view.SurfaceHolder; import...> android="http://schemas.android.com/apk/res/android" android:orientation="horizontal...android:id="@+id/camera_preview" android:layout_width="fill_parent" android:
Android 图片裁剪 前言 正文 一、创建并配置项目 二、权限申请 三、获取图片Uri 四、图片裁剪 尾声 运行效果图 ?...前言 图片裁剪是对图片进行区域选定,然后裁剪选定的区域,形成一个图片,然后再对这个图片进行压缩,最终返回结果图片。...正文 从上面的描述来看貌似是挺简单的是吧,不过实际操作起来就没有那么简单了,下面先来看看简单的实现方式,就是Android自带的裁剪。...四、图片裁剪 既然是调用Android系统的图片裁剪,那么自然也和打开系统相册差不多,依然是先创建一个请求码: /** * 图片剪裁请求码 */ public static...final int PICTURE_CROPPING_CODE = 200; 然后写一个裁剪的方法。
在android开发中, 在一些编辑个人信息的时候,经常会有头像这么一个东西,就两个方面,调用系统相机拍照,调用系统图库获取图片.但是往往会遇到各种问题: 1.oom 2.图片方向不对 3.activity...android.database.Cursor; import android.net.Uri; import android.provider.MediaStore; import android.widget.Toast...; //在onActivityResult方法中根据requestCode和resultCode来获取当前拍照的图片地址。...//注意:这里有个问题,在有些机型当中(如SamsungI939、note2等)遇见了当拍照并存储之后,intent当中得到的data为空: /** * data = null 的情况主要是由于拍照的时候横屏了...; import android.graphics.RectF; import android.media.ExifInterface; import android.net.Uri; import android.util.Log
方式进行预览拍照。...= null) { mCamera.stopPreview(); } } /** * 拍照 */ public static...R.id.btn_switch: switchCamera(); break; } } /** * 拍照..." android:layout_height="wrap_content" android:text="拍照" /> 至此,通过SurfaceView + Camera API 预览拍照功能已经实现。
Android 图片裁剪 前言 正文 一、创建并配置项目 二、权限申请 三、获取图片Uri 四、图片裁剪 五、源码 尾声 运行效果图 前言 图片裁剪是对图片进行区域选定,然后裁剪选定的区域,形成一个图片...正文 从上面的描述来看貌似是挺简单的是吧,不过实际操作起来就没有那么简单了,下面先来看看简单的实现方式,就是Android自带的裁剪。...> android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com...四、图片裁剪 既然是调用Android系统的图片裁剪,那么自然也和打开系统相册差不多,依然是先创建一个请求码: /** * 图片剪裁请求码 */ public static...final int PICTURE_CROPPING_CODE = 200; 然后写一个裁剪的方法。
应朋友需求做了款拍照测距的APP,可以测出你到目标物体的距离。...欢迎star、下载 github地址:点击打开链接 主要难点: 1.自定义相机 2.SurfaceView双缓冲问题 3.别的也没啥了 README.md DistanceMeasure An android...(for reference only) Android 拍照测距 (借用下smart distance的截图 , 如有不妥请告知) 使用方法: 输入目标物体的真实高度 动动手指用屏幕上的绿线圈住目标物体
最近在Android上做了拍照功能的开发。...业务场景是:点击界面(HTML5)上的拍照按钮会调用拍照的JS API,获取其返回照片文件的存储路径、扩展名以及照片文件的Base64字符串,然后在界面上显示图片。...private static final int ACTION_TAKE_PHOTO = 1; private Uri photoUri; /*** * 需要说明一下,以下操作使用照相机拍照,拍照后的图片会存放在相册中的...* 这里使用的这种方式有一个好处就是获取的图片是拍照后的原图 * 如果不实用ContentValues存放照片路径的话,拍照后获取的图片为缩略图不清晰 */ ContentValues values...MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT
https://blog.csdn.net/gdutxiaoxu/article/details/89576088 前言 在平时开发中,经常需要实现这样的功能,拍照 - 裁剪,相册 - 裁剪。...这篇博客实现的功能主要有仿微信,QQ 上传图像裁剪功能,包括拍照,从相册选取。裁剪框的样式有圆形,正方形,九宫格。...主要讲解的功能点 使用说明 整体的实现思路 裁剪框的实现 图片缩放的实现,包括放大,缩小,移动,裁剪等 我们先来看看我们实现的效果图 拍照裁剪的 ? 相册裁剪的 ?...// 释放资源 mImageView.destroyDrawingCache(); return zoomedCropBitmap; } ---- 题外话 这个 Demo 涉及到的 Android...Android 7.0 图片拍照适配,6.0 动态权限申请,Android 使用空白 fragment 处理 onActivityResult,动态权限申请,自定义 View,View 的事件分发机制等等
拍照 private static final int TAKE_PICTURE = 0; void takePhotoClick() { if (Build.VERSION.SDK_INT >...Manifest.permission.CAMERA}, REQUEST_CODE_ASK_PERMISSIONS); } else { startActivityForResult(new Intent("android.media.action.IMAGE_CAPTURE...grantResults[0] == PackageManager.PERMISSION_GRANTED) { startActivityForResult(new Intent("android.media.action.IMAGE_CAPTURE...choose_photo_layout_click() { //调用相册 Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI
" android:text="拍照" android:textColor="#000" /> <View android:layout_width..." android:text="取消" android:textColor="#000" /> 这是一个弹窗的布局文件,里面提供你选择拍照...R.id.tv_open_album); TextView tvCancel = bottomView.findViewById(R.id.tv_cancel); //拍照...: /** * 拍照 */ private void takePhoto() { if (!...首先拿到拍照或者打开相册后的图片路径之后,这个地址当然不是直接发送给后台的,根据我的经验,它们通常需要的是图片的base64,如下图所示:[在这里插入图片描述] 这里的base64Pic是String类型的
拍照获取图片 private void takePhoto() { // 执行拍照前,应该先判断SD卡是否存在 String SDState = Environment.getExternalStorageState...裁剪图片 public void startPhotoZoom(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP...android自带的裁剪库,部分深度定制的机型,如魅族,可能不存在该库,那么就需要自定义或者使用开源裁剪库。...activity,相册activity,裁剪activity。...需要注意,拍完照的图片需要经过裁剪,即,只有从相册选取和裁剪返回的数据可以setRuselt(),故需要添加一个if语句加以判别。
Android打开系统拍照&相册获取头像 现在许多应用都有上传头像的功能,再次奉上代开系统相册或打开系统相机拍照的实现,有的同学在测试小米手机上打开选择相册有奔溃,此代码已完美解决此问题… 楼主,做的头像需要经过裁剪之后和圆形处理...设置点击打开相机&打开系统图库 @Override public void onClick(View v) { // 打开系统拍照程...= null) { // 拍照 Bundle bundle = data.getExtras(); // 获取相机返回的数据,并转换为图片格式...Bitmap bitmap = (Bitmap) bundle.get("data"); // bitmap圆形裁剪 // bitmap...BitmapUtils.zoom(decodeFile, DensityUtil.dp2px(this, 20), DensityUtil.dp2px(this, 20)); // bitmap圆形裁剪
图片资源如下图,就是几张灰色和彩色图片 思路是利用画布canvas的裁剪,先画出灰色的图片,再画出彩色图片并对彩色图片进行裁剪,先初始化一些参数 private Paint mPaint =...maxWidth = getMeasuredWidth(); maxHeight = maxHeight * scaleX; } //需要裁剪的宽高...maxWidth / 7; needClipHeight = maxHeight; } 在onDraw方法中进行处理,要注意的是,为了不影响灰色图片,需要新创建一层图层,对画布进行裁剪后...,在新图层中画出彩色图片,由于canvas的绘图是根据当前绘图的matrix进行处理的,所以要先裁剪将matrix改变再调用canvas的draw方法,倒过来将没有效果 @Override...needClipWidth / 2) { translateX = maxWidth / 2 - needClipWidth / 2; } //将画布裁剪
演示视频一,准备 android apk的安装,本文用的自带模版是Bottom Navigation Activity,android api 30二,添加必要的权限在AndroidManifest.xml...文件中添加相机权限,与标签同级 android:name="android.permission.CAMERA" /> android:name="android.hardware.camera" /> android:name="android.hardware.camera.autofocus...", Toast.LENGTH_SHORT).show(); } } }六,实现拍照功能// 启动相机并拍照 private void takePhoto...null) { startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); } }七,处理拍照结果
最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有问题,没有一个完整的。...Intent.ACTION_GET_CONTENT); intent.setType("image/*"); } else { intent = new Intent( Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI
今天又要加打开相机拍照并且上传图片的功能。很多项目都会用到,所以一时兴起,写了个封装类,希望在其他项目中,能够快速引入相机拍照系统。...android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />...import android.app.Activity import android.content.Intent import android.graphics.Bitmap import android.graphics.BitmapFactory...import android.net.Uri import android.os.Build import android.os.Environment import android.provider.MediaStore...= null //拍照后保存的照片 var imgUri: Uri?
领取专属 10元无门槛券
手把手带您无忧上云