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


话不多说。。。直接上源代码


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);





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
" + e); // 整数测试 MyInteger f = new MyInteger(); System.out.print("请输入整数 fAndroid调用系统相机返回通常是因为没有正确处理相机返回的结果。在调用系统相机之 的值:"); value = input.nextLine(); f.setValue(value); System.out.println("f = " + f); MyInteger g = new MyInteger(); System.out.print("请输入整数 g 的值:"); value = input.nextLine(); g前,需要使用`startActivityForResult()`方法启动相机,并在`onActivityResult()`方法中处理相机返回的结果。 .setValue(value); System.out.println("g = " + g); MyInteger h = (MyInteger) f.add(g); System以下是一个示例代码: ``` private static final int REQUEST_IMAGE_CAPTURE = 1; private void dispatchTakePictureIntent() { .out.println("f + g = " + h); MyInteger i = (MyInteger) f.subtract(g); System.out.println(" Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { f - g = " + i); if (f.compareTo(g) > 0) { System.out.println("f > g"); startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { } else if (f.compareTo(g) < 0) { System.out.println("f < g"); } else { System.out.println("f = g"); } MyNaturalNumbers j = g.toMyNaturalNumber(); System.out.println("j = if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { // 处理相机返回的结果 Bundle extras = " + j); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值