您的位置:首页 > 移动开发 > Android开发

android调用系统(相机)的图片,并且返回

2012-08-23 10:24 363 查看
话不多说。。。直接上源代码

package com.ljz.test.main;

import android.app.Activity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.os.Bundle;

import android.view.Menu;

public class MainActivity extends Activity

{

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

intent.addCategory(Intent.CATEGORY_OPENABLE);

//这个参数是确定要选择的内容为图片

intent.setType("image/*");

//这个参数 不太懂,唯一知道的是:设置了参数,就会调用裁剪,如果不设置,就会跳过裁剪的过程。

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

//这个是裁剪时候的 裁剪框的 X 方向的比例。

intent.putExtra("aspectX", 1);

//同上Y 方向的比例. (注意: aspectX, aspectY ,两个值都需要为 整数,如果有一个为浮点数,就会导致比例失效。)

intent.putExtra("aspectY", 1);

//返回数据的时候的 X 像素大小。

intent.putExtra("outputX", 80);

//返回的时候 Y 的像素大小。

intent.putExtra("outputY", 80);

//是否要返回值。 一般都要。

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

startActivityForResult(intent, 0);

}

@Override

public boolean onCreateOptionsMenu(Menu menu)

{

getMenuInflater().inflate(R.menu.activity_main, menu);

return true;

}

@Override

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

{

System.out.println(resultCode);

Bitmap cameraBitmap = (Bitmap) data.getExtras().get("data");

if( cameraBitmap == null )

{

System.out.println("null");

}

else

{

System.out.println("not null");

}

super.onActivityResult(requestCode, resultCode, data);

}

}

关于源代码的细化说明:

网上有不少文章说怎么调用图库去选择并裁剪图片,却对这些参数说的比较少。 今天把看懂的一些参数总结一下:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);

intent.setType("image/*"); //这个参数是确定要选择的内容为图片
intent.putExtra("crop", "circle"); //这个参数 不太懂,唯一知道的是:设置了参数,就会调用裁剪,如果不设置,就会跳过裁剪的过程。

intent.putExtra("aspectX", 33); //这个是裁剪时候的 裁剪框的 X 方向的比例。

intent.putExtra("aspectY",43); //同上Y 方向的比例. (注意: aspectX, aspectY ,两个值都需要为 整数,如果有一个为浮点数,就会导致比例失效。)

//设置aspectX 与 aspectY 后,裁剪框会按照所指定的比例出现,放大缩小都不会更改。如果不指定,那么 裁剪框就可以随意调整了。
intent.putExtra("outputX", 50); //返回数据的时候的 X 像素大小。

intent.putExtra("outputY", 100); //返回的时候 Y 的像素大小。

//以上两个值,设置之后会按照两个值生成一个Bitmap, 两个值就是这个bitmap的横向和纵向的像素值,如果裁剪的图像和这个像素值不符合,那么空白部分以黑色填充。

intent.putExtra("noFaceDetection", true); // 是否去除面部检测, 如果你需要特定的比例去裁剪图片,那么这个一定要去掉,因为它会破坏掉特定的比例。

intent.putExtra("return-data", true); //是否要返回值。 一般都要。

startActivityForResult(intent, 1);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐