调用相机相册+裁剪功能

package com.example.camera_d;


import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;


import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.GradientDrawable.Orientation;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.provider.MediaStore.Files.FileColumns;
import android.provider.MediaStore.Images.Media;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.MeasureSpec;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.PopupWindow;


import com.example.camera_d.R.layout;


public class MainActivity extends Activity  {


    private ImageView iv_img;
private PopupWindow pop;
private Button btn_opencamera;
private Button btn_opencmputer;
private Button btn_over;
private String path;
private String path1;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        //设置图片保存路径及名字
        path=Environment.getExternalStorageDirectory()+File.separator+"from"+System.currentTimeMillis()+".png";
        path1=Environment.getExternalStorageDirectory()+File.separator+"to"+System.currentTimeMillis()+".png";
        iv_img=(ImageView)findViewById(R.id.iv_img);
        iv_img.setOnClickListener(new OnClickListener() {
public void onClick(View v) {

showwindow();

}
});
        
    }

    private void init() {
GradientDrawable gd = new GradientDrawable(Orientation.LEFT_RIGHT,
new int[] { Color.GREEN, Color.YELLOW });
getWindow().setBackgroundDrawable(gd);



           
           
           /*//创建popupwindw
           View view = LayoutInflater.from(this).inflate(layout.popup, null);
           btn_opencamera=(Button)view.findViewById(R.id.btn_opencamera);
           btn_opencmputer=(Button)view.findViewById(R.id.btn_opencmputer);
           btn_over=(Button)view.findViewById(R.id.btn_over);
           pop=new PopupWindow(view, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
           pop.setFocusable(true);
           pop.setOutsideTouchable(true);
           pop.setBackgroundDrawable(new BitmapDrawable());
           btn_opencamera.setOnClickListener(this);
           btn_opencmputer.setOnClickListener(this);
           btn_over.setOnClickListener(this);*/
           

}
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode==RESULT_OK){
      switch(requestCode){
    case 1:
    phonozoom(Uri.fromFile(new File(path)));
    case 2:
    if(data!=null){phonozoom(data.getData());}
    case 3:
    if(data!=null){setphoto(data);}}}}
private void showwindow(){

new AlertDialog.Builder(MainActivity.this).setTitle("设置头像")
.setNegativeButton("拍照", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {

Intent it=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
it.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new File(path)));
startActivityForResult(it, 1);
}})
.setPositiveButton("相册", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent it=new Intent(Intent.ACTION_PICK);
it.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
startActivityForResult(it, 2);
}}).show(); }

/**
* 裁剪图片的方法
*/
private void phonozoom(Uri uri){
Intent it=new Intent("com.android.camera.action.CROP");
it.setDataAndType(uri, "image/*"); // mUri是已经选择的图片Uri  
         it.putExtra("crop", "true");  
         it.putExtra("aspectX", 1);// 裁剪框比例  
         it.putExtra("aspectY", 1);  
         it.putExtra("outputX", 300);// 输出图片大小  
         it.putExtra("outputY", 300);  
         it.putExtra("return-data", true);
         startActivityForResult(it, 3);
}
/**
* 保存裁剪后的图片

*/
private void setphoto(Intent datat){
Bundle extras = datat.getExtras();
if(extras!=null){
Bitmap bitmap= (Bitmap) extras.getParcelable("data");
iv_img.setImageBitmap(bitmap);
try {
bitmap.compress(Bitmap.CompressFormat.PNG, 100, new FileOutputStream(path1));
} catch (FileNotFoundException e) {e.printStackTrace();}}}
  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值