package weixinlookimgsdemo.hankkin.com.caijianpc; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Environment; import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import java.io.File; public class MainActivity extends AppCompatActivity { // 拍照成功,读取相册成功,裁减成功 private final int ALBUM_OK = 1, CAMERA_OK = 2,CUT_OK = 3; private ImageView showIv; private File file; Button fromAlbum_button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showIv = (ImageView) findViewById(R.id.show_imageView); fromAlbum_button=(Button)findViewById(R.id.fromAlbum_button); fromAlbum_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 来自相册 Intent albumIntent = new Intent(Intent.ACTION_PICK, null); /** * 下面这句话,与其它方式写是一样的效果,如果: * intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI); * intent.setType(""image/*");设置数据类型 * 要限制上传到服务器的图片类型时可以直接写如:"image/jpeg 、 image/png等的类型" */ albumIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(albumIntent, ALBUM_OK); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { System.out.println("requestCode = " + requestCode); switch (requestCode) { // 如果是直接从相册获取 case ALBUM_OK: //从相册中获取到图片了,才执行裁剪动作 if (data != null) { clipPhoto(data.getData()); } break; // 取得裁剪后的图片,这里将其设置到imageview中 case CUT_OK: /** * 非空判断大家一定要验证,如果不验证的话, 在剪裁之后如果发现不满意, * 要重新裁剪,丢弃 当前功能时,会报NullException */ if (data != null) { setPicToView(data); } break; default: break; } super.onActivityResult(requestCode, resultCode, data); } /** * 裁剪图片方法实现 * @param uri */ public void clipPhoto(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 是宽高的比例,这里设置的是正方形(长宽比为1:1) intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 200); intent.putExtra("outputY", 200); intent.putExtra("return-data", true); startActivityForResult(intent, CUT_OK); } /** * 保存裁剪之后的图片数据 将图片设置到imageview中 * * @param picdata */ private void setPicToView(Intent picdata) { Bundle extras = picdata.getExtras(); if (extras != null) { Bitmap photo = extras.getParcelable("data"); Drawable drawable = new BitmapDrawable(photo); showIv.setImageDrawable(drawable); } } }