android图片剪切

通过从相册中选择或由拍照直接获取图片后,android程序对图片进行操作。

MainActivity.java如下:


package com.example.photohandle;

import java.io.File;
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.Button;
import android.widget.ImageView;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;


public class MainActivity extends Activity {
    private Button button;
    private ImageView userHeader;
    
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button) findViewById(R.id.btnclick);
button.setOnClickListener(new ClickBtnListener());
userHeader=(ImageView) findViewById(R.id.imageView);
}

class ClickBtnListener implements OnClickListener {
@Override
public void onClick(View v) {
ShowPickDialog();  
}
}

//选择图片提示框
private void ShowPickDialog() {
new AlertDialog.Builder(this)    
    .setTitle("设置头像")    
    .setNegativeButton("相册", new DialogInterface.OnClickListener() {    
        public void onClick(DialogInterface dialog, int which) {    
            dialog.dismiss();    
            Intent intent = new Intent(Intent.ACTION_PICK, null);    
            intent.setDataAndType(    
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");    
            startActivityForResult(intent, 1);    
        }    
    })    
    .setPositiveButton("拍照", new DialogInterface.OnClickListener() {    
        public void onClick(DialogInterface dialog, int whichButton) {    
            dialog.dismiss();    
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(),"1.jpg"))); 
            startActivityForResult(intent, 2);    
        }    
    }).show();    
}
 
@Override   
protected void onActivityResult(int requestCode, int resultCode, Intent data) {    
       switch (requestCode) {    
       // 如果是直接从相册获取    
       case 1:    
           startPhotoZoom(data.getData());    
           break;    
       // 如果是调用相机拍照时    
       case 2:    
        startPhotoZoom(Uri.fromFile(new File(Environment.getExternalStorageDirectory(),"1.jpg")));     
           break;    
       // 取得裁剪后的图片    
       case 3:    
           if(data != null){    
               setPicToView(data);   
           }    
           break;    
       default:    
           break;    
       }    
       super.onActivityResult(requestCode, resultCode, data);    
}   
 
public void startPhotoZoom(Uri uri) {    
    Intent intent = new Intent("com.android.camera.action.CROP");    
    intent.setDataAndType(uri, "image/*");    
    //下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪    
    intent.putExtra("crop", "true");    
    // aspectX aspectY 是宽高的比例    
    intent.putExtra("aspectX", 1);    
    intent.putExtra("aspectY", 1);    
    // outputX outputY 是裁剪图片宽高(可自主设置图片的大小)
    intent.putExtra("outputX", 150);    
    intent.putExtra("outputY", 150);    
    intent.putExtra("scale", true);
    intent.putExtra("return-data", true);    
    startActivityForResult(intent, 3);    
}  
 
 /**    
  * 保存裁剪之后的图片数据    
  */    
@SuppressWarnings("deprecation")
private void setPicToView(Intent picdata) {    
       Bundle extras = picdata.getExtras();    
       if (extras != null) {    
        Bitmap photoBitmap = extras.getParcelable("data");
Drawable drawable = new BitmapDrawable(photoBitmap);  
           userHeader.setImageDrawable(drawable);
       }    
}   
 
}


activity_main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >


 <Button android:textSize="15.0sp" 
     android:ellipsize="marquee" 
     android:id="@id/btnclick" 
     android:layout_width="80.0dip" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="5.0dip" 
     android:singleLine="true" 
     android:layout_centerVertical="true" 
     android:marqueeRepeatLimit="marquee_forever" />


 <ImageView
     android:id="@+id/imageView"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_centerHorizontal="true"
     />
 
</RelativeLayout>

源码下载地址:http://download.csdn.net/detail/hc326254970/6828043

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值