android图片截取的两种方式

    文章主要提供android系统上拍照图片截取和图片 选择截取 两种方式,适用于app头像选择等环境。

拍照截取


打开相机


Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(intent,“自定义”);


截图


Intent intent = getCropImageIntent(data);

startActivityForResult(intent, “自定义”);


处理获取到的图片


public static Intent getCropImageIntent(Bitmap data) {

Intent intent = new Intent("com.android.camera.action.CROP");

intent.setType("image/*");

intent.putExtra("data", data);

intent.putExtra("crop", "true");

intent.putExtra("aspectX", 1);

intent.putExtra("aspectY", 1);

//    intent.putExtra("outputX", 300);

//    intent.putExtra("outputY", 300);

intent.putExtra("return-data", true);

intent.putExtra("outputFormat", "JPEG");

return intent;

}


取得数据


@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// TODO Auto-generated method stub

switch(requestCode){

// xxxxx

Bitmap photo = data.getParcelableExtra("data");

}

}

选择截取


关键代码


Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT);

innerIntent.putExtra("crop", "true");// 剪辑方框

innerIntent.putExtra("aspectX", 1); // 放大和缩小

innerIntent.putExtra("aspectY", 1); // 如果aspectX和aspectY同时设置为相同值的话则为矩形

innerIntent.setType("image/*"); // 查看类型 详细的类型在 com.google.android.mms.ContentType

tempFile=new File("/sdcard/"+Calendar.getInstance().getTimeInMillis()+".jpg"); // 以时间秒为文件名

File temp = new File("/sdcard/");//目录文件夹,如果不存在则创建

if (!temp.exists()) {

temp.mkdir();

}

innerIntent.putExtra("output", Uri.fromFile(tempFile));  //传入目标文件

innerIntent.putExtra("outputFormat", "JPEG"); //文件格式

Intent wrapperIntent = Intent.createChooser(innerIntent, "先择图片"); //开始 并设置标题

startActivityForResult(wrapperIntent, 1); // 设置返回 码为 1  与onActivityResult


//调用成功反回方法

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

switch (requestCode) {

case 1:

//        这里处理逻辑

break;

}

}


权限


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

android图片截取的两种方式

时间: 2024-10-14 02:17:05

android图片截取的两种方式的相关文章

android菜单创建的两种方式和菜单项添加图标

    菜单创建的两种方式:     1.在xml文件中创建菜单: 具体代码: <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context="com.xunfang.menucreate.MainActivity" > //此处创建子菜单 <

android回调接口的两种方式

熟悉MS-Windows和X Windows事件驱动设计模式的开发人员,通常是把一个方法的指针传递给事件源,当某一事件发生时来调用这个方法(也称为“回调”).Java的面向对象的模型目前不支持方法指针,似乎不能使用这种方便的机制. 但是java本身拥有interface,我们可以用interface实现相同的效果.在android中,如果我们需要对一个button的点击事件往外传,可以有两种实现方式. 第一种方式的大体步骤是: 1.定义一个回调接口,用来捕捉和“存放”点击事件. public i

安卓获取图片缩略图的两种方式

1. /** * 通过内容提供器来获取图片缩略图 缺点:必须更新媒体库才能看到最新的缩略图 * @param context * @param cr * @param Imagepath * @return */ public static Bitmap getImageThumbnail(Context context, ContentResolver cr, String Imagepath) { ContentResolver testcr = context.getContentReso

android 中退出程序的两种方式

转自:http://blog.sina.com.cn/s/blog_5da93c8f0100t76l.html 思考:如何安全的退出程序? finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理:当调用System.exit(0)时,杀死了整个进程,这时候活动所占的资源也会被释放.在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK)就能关闭

Android 生成keystore的两种方式

一.eclipse 中生成android keystore 建立任意一个android项目(例如:AntForAndroid) 右键AntForAndroid根目录弹出菜单->Android Tools -> Export Signed Application Package... Next > 选择"Create new keystore"并且保存在一个目录下面(本例子保存在项目跟目录下) 输入密码,然后next 填写一些信息,填写的Alias 和 密码不要忘记了

Android播放音频的两种方式

一种使用MediaPlayer,使用这种方式通常是播放比较长的音频,如游戏中的背景音乐. 代码如下: [java] view plain copy private MediaPlayer mPlayer = null; mPlayer = MediaPlayer.create(this,R.raw.music); mPlayer.setLooping(true); mPlayer.start(); 另一种是使用SoundPool进行播放,通常都是播放短音效,比如枪声或者水滴声. 首先需要设置左声

Android 生成keystore,两种方式

一.eclipse 中生成android keystore 建立任意一个android项目(例如:AntForAndroid) 右键AntForAndroid根目录弹出菜单->Android Tools -> Export Signed Application Package... Next > 第二步:创建密钥库keystore,输入密钥库导出位置和密码,记住密码,下次Use existing keystore会用到 选择"Create new keystore"并

android 隐藏默认标题栏两种方式

在setconnetView()之前加入 requestWindowFeature(Window.FEATURE_NO_TITLE);//第一种 getWindow().setFlags(Window.FEATRUE_NO_TITLE,Window.FEATRUE_NO_TITLE);//第二种 原文地址:https://www.cnblogs.com/MYDoraemon/p/8605891.html

android 切换fragment的两种方式

使用add方法切换时:载入Fragment1Fragment1 onCreateFragment1 onCreateViewFragment1 onStartFragment1 onResume用以下代码切到Fragment2: FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.hide(Fragment1); ft.add(R.id.simple_fragment, Fragment2); ft.setTr