- 浏览: 183049 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
Allen_J_Will:
...
python学习,第四天笔记 -
大头K:
qindongliang1922 写道你用的啥IDE工具楼主
...
python学习,第三天笔记 -
qindongliang1922:
你用的啥IDE工具楼主
python学习,第三天笔记 -
大头K:
hksfho 写道你好,怎樣顯不坐標?你说的是在地图上显示坐标 ...
基于百度地图实现的实时定位功能(含项目代码) -
hksfho:
你好,怎樣顯不坐標?
基于百度地图实现的实时定位功能(含项目代码)
调用手机相机实现拍照、剪裁图片、并保存图片到手机
先看效果图:
直接上代码:
github源码地址:
https://github.com/kk-java/CameraDemo
先看效果图:
直接上代码:
package com.liucanwen.camerademotest; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; /** * 拍照demo * 功能:拍照、剪裁、保存到手机上 * @author ck * @since 2014年3月20日 16:04:57 */ public class MainActivity extends Activity implements OnClickListener { private ImageView headIv; // 设置头像 private static final int IMAGE_REQUEST_CODE = 0; // 请求码 本地图片 private static final int CAMERA_REQUEST_CODE = 1; // 拍照 private static final int RESULT_REQUEST_CODE = 2; // 裁剪 private static final String SAVE_AVATORNAME = "head.png";// 保存的图片名 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); headIv = (ImageView) findViewById(R.id.image_layout); headIv.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.image_layout: showOptionsDialog(); break; default: break; } } // 选择图片来源 private void showOptionsDialog() { String[] items = new String[] { "拍照", "选择本地图片" }; DialogInterface.OnClickListener click = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0://拍照 Intent intentFromCapture = new Intent( MediaStore.ACTION_IMAGE_CAPTURE); intentFromCapture.putExtra(MediaStore.EXTRA_OUTPUT, Uri .fromFile(new File(Environment .getExternalStorageDirectory(), SAVE_AVATORNAME))); startActivityForResult(intentFromCapture, CAMERA_REQUEST_CODE); break; case 1://选择本地图片 Intent intentFromGallery = new Intent(); intentFromGallery.setType("image/*"); // 设置文件类型 intentFromGallery.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intentFromGallery, IMAGE_REQUEST_CODE); break; } } }; new AlertDialog.Builder(this).setItems(items, click).show(); } /** * 回调结果处理 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_CANCELED) { switch (requestCode) { case IMAGE_REQUEST_CODE: startPhotoZoom(data.getData()); break; case CAMERA_REQUEST_CODE: startPhotoZoom(Uri.fromFile(new File(Environment .getExternalStorageDirectory(), SAVE_AVATORNAME))); break; case RESULT_REQUEST_CODE: if (data != null) { getImageToView(data); } break; } } super.onActivityResult(requestCode, resultCode, data); } /** * 裁剪图片方法实现 */ public void startPhotoZoom(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); // 设置裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 300); intent.putExtra("outputY", 300); intent.putExtra("return-data", true); startActivityForResult(intent, RESULT_REQUEST_CODE); } /** * 保存裁剪之后的图片数据 */ private void getImageToView(Intent data) { Bundle extras = data.getExtras(); if (extras != null) { Bitmap photo = extras.getParcelable("data"); saveMyBitmap(photo); // 保存裁剪后的图片到SD headIv.setImageBitmap(photo); } } /** * 将头像保存在SDcard */ public void saveMyBitmap(Bitmap bitmap) { File f = new File(Environment.getExternalStorageDirectory(), SAVE_AVATORNAME); try { f.createNewFile(); FileOutputStream fOut = new FileOutputStream(f); bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut); fOut.flush(); fOut.close(); } catch (IOException e) { e.printStackTrace(); } } }
github源码地址:
https://github.com/kk-java/CameraDemo
发表评论
-
android studio 编译问题
2015-08-12 17:58 6671、今天在用AS直接调试安装应用的时候,发现安装的debug应 ... -
BASE64加密解密
2014-08-19 17:59 0import java.io.ByteArrayOutputS ... -
在EditText和TextView显示表情图片(类似QQ表情)
2014-08-04 13:25 1596通过重写EditText和TextView,在EditText ... -
java修改目录所有文件名
2014-07-15 13:03 1830前言: 一直遇到一个问题,android在打包的时候,有时会涉 ... -
webview清除cookie
2014-07-14 15:54 4159前言: 由于项目需要,webview需要与app进行交互,其实 ... -
按正方形裁切图片和图片加边框
2014-06-07 09:13 18651.按正方形裁切图片: /** * 按正方形裁切图片 ... -
解决部分android手机照片被系统自动旋转
2014-05-21 14:13 1747使用某星手机有为应用的图库添加图片时,发现照片已被旋转,APP ... -
关于拍完照或者保存图片,无法在相册上显示问题
2014-05-05 17:43 893场景:拍完照或者保存图片到SDCard时,无法马上在相册上显示 ... -
Universal-Image-Loader 内存占用
2014-04-30 23:24 1497前言:之前项目一直使用Universal-Image-Load ... -
Fragment already added 解决方法
2014-04-22 11:22 13136最近项目上遇到一个问题: 找了很久,尼玛终于找到方法解决 ... -
非官方调用新浪微博
2014-04-18 09:19 1864很多情况,我们都需要用户关注我们的官方微博,现在提供两种办法展 ... -
类似上下滚动切换广告牌效果实现
2014-04-18 06:39 0看到需求时,上下滚动切换,第一反应就是VerticalView ... -
关于刷新自定义View
2014-04-18 06:34 774因为项目需要,需要在自定义View可见之后再动态变化宽度。 ... -
保存网络图片到手机上
2014-04-16 12:00 903// 保存图片到手机端 public static bool ... -
ListView快速定位第一行
2014-04-15 16:23 994if (Build.VERSION.SDK_INT < ... -
FragmentTabHost切换Fragment时避免UI重新加载
2014-03-12 14:27 4484用FragmentTabHost + Fragment 可以实 ... -
Gridview 去掉橙色点击响应效果
2014-03-12 11:19 907一行代码搞定: gridView.setSelector(ne ... -
如何在service里面弹出对话框
2014-03-10 00:03 3152先给一个需求:需要在service里面监听短信的接收,如果接收 ... -
ViewFlipper 3D旋转动画实现 界面切换
2014-03-08 00:46 1657先来看看效果: 简单介绍一下,两个界面,以水平中线旋转18 ... -
代码混淆时注意事项,防止注解被删掉
2014-03-06 07:58 4134昨天在混淆代码生成apk时,一直无法正常打开,看错误log,发 ...
相关推荐
这是github的项目源码地址。Android Studio2.3.3调用系统的Camera实现拍照功能,并将照片保存到本地内存卡中
swift版 Github 源码 比起oc版的github要简单很多
GitHub Android App源码
php码云+GitHub图床源码,依托码云和github,搭建一个免费的,受自己控制的图床。 既稳定,也不用担心对方跑路。可能目录模式对大图不友好,所以采用贴图+图片链接模式。 仅支持单文件,大小限制2MB,本站图床存储...
Spark github源码 例子很有价值 github无法下载的可以直接下载这个源码
SpringFramework源码 Github上下载的,用gradle编译好了(墙得厉害,网络龟速,LZ不容易%>_)喜欢研究Spring源码的童鞋可以看看,可以直接导入eclipse查看
微信小程序-github 微信小程序的一个练手项目以及作为一个github重度使用者,使用[github api](https://developer.github.com/v3/)结合微信小程序来开发.使用方法 没有小程序的内测资格,自然也就无法上传,只能...
cesium源码_github包
python调用github api ,http://api.github.com,查看仓库信息
一款Windows环境下非常简洁美观易用的命令行工具——cmd替代者,它支持了大部分的Linux命令。支持ssh连接linux,使用起来非常方便。比起cmd、powershell、conEmu,其界面美观简洁,功能强大。
log日志相关github 源码
github源码下载速度慢,脚本使用了国内镜像下载路径,执行权限即可,全部源码会自动高速下载到grpc目录中。
珠峰vue源码,github转的
微信小程序demo:github博客(源代码+截图)微信小程序demo:github博客(源代码+截图)微信小程序demo:github博客(源代码+截图)微信小程序demo:github博客(源代码+截图)微信小程序demo:github博客(源代码+截图)微信...
Github的第三方客户端源码,这是一个代码托管网站Github的移动客户端,基于Github 官方API开发,实现了查看动态,查看项目详情,查看代码,star项目,follow用户,搜索项目,搜索用户,查看Trending等主要功能。
labelme github 源码
volley是一个优秀的安卓开源网络访问工具 这里包含一个volley代码jar和源码,版本是2015.03.03的1.0.11版本 更多资料可以参见volley的github地址: https://github.com/mcxiaoke/android-volley
linuxdeployqt github源码
安卓Android源码——github客户端.zip
Kubernetes源码,2018.07.18从GitHub上下载的。Kubernetes 已成为在私有云、公有云和混合云环境中大规模部署容器化应用的事实标准。AWS、Google Cloud、Azure、IBM Cloud 和 Oracle Cloud 等几个最大的公有云平台都...