ImageVerifierCode 换一换
格式:DOC , 页数:10 ,大小:54.50KB ,
资源ID:8899249      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8899249.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(在Android中实现视频抓拍与照片自由裁剪的编程方法.doc)为本站上传会员【s4****5z】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

在Android中实现视频抓拍与照片自由裁剪的编程方法.doc

1、在Android中实现视频抓拍与照片自由裁剪的编程方法 在Android操作系统下可通过编程实现对视频图像进行抓拍并对图片的裁剪与上传功能。简单的实现方法采用Android 自带有关于照片的自由裁剪,非常适用及视频抓拍的接口功能。 一、视频抓拍 1、基本类 Android 框架通过 Camera API 或者 camer Intent 的方式,支持 捕捉图像和视频 。相关的大类主要有以下几个: (1) Camera 摄像时候必须调用到的类; (2)SurfaceView 提供摄像头预览。 (3)MediaRecorder 录像时候用到的类; (4)Intent 如果不通过

2、Camera 对象来操控摄像头,那么用两个intent 动作 MediaStore.ACTION_IMAGE_CAPTURE or MediaStore.ACTION_VIDEO_CAPTURE 也能够实现摄影和录像。 o MediaStore.ACTION_IMAGE_CAPTURE —— 向内置摄像头程序请求图像的意图活动类型。 o MediaStore.ACTION_VIDEO_CAPTURE —— 向内置摄像头程序请求视频的意图活动类型。 2、 Manifest 声明 在使用Camera API前,必须做出使用 Camera 硬件的声明。主要有下面 点: (1) Camera

3、 允许:(注意,如果是通过intent 意图来操控的,则不需要下面声明) (2)Camera 特征,比如说名字 (3)如果你要在SD卡中保存照片和视频,那么就得开启SD卡权限 (4)录音权限

4、es-permission android:name="android.permission.RECORD_AUDIO" /> (5)如果希望在照片中插入GPS当地信息,还得开启GPS 3、使用方法 使用摄像头的方法有两种: 一种是编写代码比较少的,快速使用摄像头的意图Intent 方法; 另外一种就是 自动外观的摄像头用户界面,要求编写更多的代码。 4、使用Intent 快速应用摄像头:使用默认配置拍摄并保存 /* * 前置

5、摄像头抓拍 * */ /*--------------------------摄像头程序-begin--------------------------------*/ camera_catch.setOnClickListener(new OnClickListener() { @Override public void onClick(View source) { Intent capture_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //创建一个文件来保存图片 File out = new File(c

6、apture_path); //转换为URI地址 Uri uri = Uri.fromFile(out); //设置图片保存 capture_intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); //图片质量为高 capture_intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,1); //启动拍照意图 startActivityForResult(capture_intent, CAPTURE_REQUEST_CODE); } }); } /* * 拍照,并保存数据,通过重写onAc

7、tivityResult 方法去返回处理结果给主main:RFID * */ @Override protected void onActivityResult(int requestCode,int resultCode,Intent data) { //重写父类方法 super.onActivityResult(requestCode, resultCode, data); if(requestCode == CAPTURE_REQUEST_CODE) //判断是摄像头请求 { if(resultCode == RESULT_OK) { //拍照图像显示 Bitma

8、p capture_bm = (Bitmap) data.getExtras().get("data"); p1_image.setImageBitmap(capture_bm); File captureFile = new File(capture_path); try { BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(captureFile)); capture_press(Bitmap.CompressFormat.JPEG, 100, bos); bos.flush()

9、 bos.close(); } catch (Exception e) { // TODO: handle exception Toast.makeText(this, "没有找到照片文件", 1000).show(); } } } } /*--------------------------摄像头程序-end--------------------------------*/ 5、自定义摄像头:预览、聚焦后才拍摄 主要步骤如下: (1)调用 Camera 的 open() 方法打开相机,该方法默认打开后置摄像头,如果打开前置摄像头,就必须获得前置摄像头的ID,然后传

10、入该ID ; (一般后置ID 是0 ,前置是1 ,Android 2.3 (API Level 9) 以上版本允许利用Camera.getNumberOfCameras()方法来检查设备可用摄像头的数量) 可用Camera.open()方法来访问主摄像头,并确保捕获全部的异常,示例代码如下: /** 安全获取Camera对象实例的方法*/ public static Camera getCameraInstance(){ Camera c = null; try { c = Camera.open(int ID); // 试图获取Camera实例,ID 指的是摄像头ID } c

11、atch (Exception e){ // 摄像头不可用(正被占用或不存在) } return c; // 不可用则返回null } 注意,每次使用 Camera open() 时都要检查异常,如果摄像头被占用或者不存在的话,未检查异常将会导致应用程序被系统强行关闭。 (2)调用 Camera 的getParameters() 方法获取拍照 参数,该方法返回一个Camera.Parameters 对象; 调用Camera.Parameters 对象方法设置拍照参数;可用Camera.getCameraInfo()来确定摄像头朝前还是朝后以及图像的方向。 (3)调用Camera

12、的 takePciture()方法 进行拍照。 (4)结束程序时,调用release() 来释放资源。 camera = Camera.open(1); //打开前置摄像头 //设置图片格式 if(camera != null) { try { //设置摄像头参数 Camera.Parameters parameters = camera.getParameters(); //设置图片格式 parameters.setPictureFormat(ImageFormat.JPEG); //设置图片质量 parameters.set("jpeg-quality", 100)

13、 } catch (Exception e) { e.printStackTrace();// TODO: handle exception } } 二、图片自由裁剪 关键代码如下: public void imageCut(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); //开启裁剪功能 intent.putExtra("crop", "true"); //设定宽高的比例 intent.pu

14、tExtra("aspectX", 1); intent.putExtra("aspectY", 1); //设定裁剪图片宽高 intent.putExtra("outputX", 100); intent.putExtra("outputY", 100); //要求返回数据 intent.putExtra("return-data", true); startActivityForResult(intent, 100); } 返回数据后直接在onActivityResult 里对返回的图片数据进行显示就行了,这里由于剪切后的图片较小,个人觉得应该不用考虑OOM的问题,问题是

15、在调用自带的裁剪功能的时候,由于没看源码,所以不知道在调整裁剪框的时候,显示的那副图片有没有进行压缩,如果没有进行压缩,那么当图片很大的时候,加载起来就很容易出现OOM了,明显对此由于是调用官方的API,我没有方法去解决它。唯一的办法就是不用它,而是自己去写一个,就可以避免这个问题。利用如下的代码进行压缩,很好地避免OOM问题。 /* * 压缩图片,返回的是压缩后的照片 */ public static Bitmap revitionImage(String path,int size){ Bitmap bitmap = null; try { //先用图片路径打开图片文件,缓

16、冲到一个缓存输入流中 BufferedInputStream in = new BufferedInputStream(new FileInputStream( new File(path))); //用参数代表变量来记录当前照片的信息,比如图片大小 BitmapFactory.Options options = new BitmapFactory.Options(); //把inJustDecodeBounds设置为true,则完全不用分配内存就可以得到给位图文件bitmap的信息, //如此得到大小后,就可以对其进行7压缩,然后在内存中生成一个更小的bitmap,节省了内存

17、options.inJustDecodeBounds = true; //译码位图文件,只为了得到原图的信息 BitmapFactory.decodeStream(in ,null,options); //记得关闭流 in.close(); int i = 0; while(true){ //右移i位是因为下面的pow取一半了,新生成的图片是原来的二分之一 if (((options.outWidth >> i)<=size) && ((options.outHeight >> i) <=size)) { //这时候应取得照片了 in = new BufferedInpu

18、tStream(new FileInputStream(new File(path))); //pow是次方方法,2的i次方,inSampleSize图片均分取样值,例如 //inSampleSize == 4 returns an image that is 1/4 the width/height of the original, and 1/16 the number of pixels. options.inSampleSize = (int)Math.pow(2.0, i); //这时候的图片已经符合我们设定的256大小了,所以要在设置false,允许输出,创建图片 //真正地生成一个有像素的,经过缩放的bitmap options.inJustDecodeBounds = false; bitmap = BitmapFactory.decodeStream(in,null,options);//获得n分之一原图,小于256*256 break; }else { i++; } } } catch (IOException e) { Log.i(TAG, "压缩图片出错"+e.toString()); } return bitmap; }

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服