1. package cn.m15.test;

  2. import java.io.ByteArrayOutputStream;
  3. import java.io.File;
  4. import android.app.Activity;
  5. import android.content.Intent;
  6. import android.graphics.Bitmap;
  7. import android.net.Uri;
  8. import android.os.Bundle;
  9. import android.os.Environment;
  10. import android.provider.MediaStore;
  11. import android.view.View;
  12. import android.view.View.OnClickListener;
  13. import android.widget.Button;
  14. import android.widget.ImageView;

  15. public class testActivity extends Activity {

  16. public static final int NONE = 0;
  17. public static final int PHOTOHRAPH = 1;// 拍照
  18. public static final int PHOTOZOOM = 2; // 缩放
  19. public static final int PHOTORESOULT = 3;// 结果

  20. public static final String IMAGE_UNSPECIFIED = "image/*";
  21. ImageView imageView = null;
  22. Button button0 = null;
  23. Button button1 = null;

  24. @Override
  25. public void onCreate(Bundle savedInstanceState) {
  26. super.onCreate(savedInstanceState);
  27. setContentView(R.layout.main);
  28. imageView = (ImageView) findViewById(R.id.imageID);
  29. button0 = (Button) findViewById(R.id.btn_01);
  30. button1 = (Button) findViewById(R.id.btn_02);

  31. button0.setOnClickListener(new OnClickListener() {
  32. @Override
  33. public void onClick(View v) {
  34. Intent intent = new Intent(Intent.ACTION_PICK, null);
  35. intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED);
  36. startActivityForResult(intent, PHOTOZOOM);
  37. }
  38. });

  39. button1.setOnClickListener(new OnClickListener() {

  40. @Override
  41. public void onClick(View v) {
  42. Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  43. intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg")));
  44. startActivityForResult(intent, PHOTOHRAPH);
  45. }
  46. });
  47. }

  48. @Override
  49. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  50. if (resultCode == NONE)
  51. return;
  52. // 拍照
  53. if (requestCode == PHOTOHRAPH) {
  54. //设置文件保存路径这里放在跟目录下
  55. File picture = new File(Environment.getExternalStorageDirectory() + "/temp.jpg");
  56. startPhotoZoom(Uri.fromFile(picture));
  57. }

  58. if (data == null)
  59. return;

  60. // 读取相册缩放图片
  61. if (requestCode == PHOTOZOOM) {
  62. startPhotoZoom(data.getData());
  63. }
  64. // 处理结果
  65. if (requestCode == PHOTORESOULT) {
  66. Bundle extras = data.getExtras();
  67. if (extras != null) {
  68. Bitmap photo = extras.getParcelable("data");
  69. ByteArrayOutputStream stream = new ByteArrayOutputStream();
  70. photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0 - 100)压缩文件
  71. imageView.setImageBitmap(photo);
  72. }

  73. }

  74. super.onActivityResult(requestCode, resultCode, data);
  75. }

  76. public void startPhotoZoom(Uri uri) {
  77. Intent intent = new Intent("com.android.camera.action.CROP");
  78. intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
  79. intent.putExtra("crop", "true");
  80. // aspectX aspectY 是宽高的比例
  81. intent.putExtra("aspectX", 1);
  82. intent.putExtra("aspectY", 1);
  83. // outputX outputY 是裁剪图片宽高
  84. intent.putExtra("outputX", 64);
  85. intent.putExtra("outputY", 64);
  86. intent.putExtra("return-data", true);
  87. startActivityForResult(intent, PHOTORESOULT);
  88. }
  89. }


package cn.m15.test;  import java.io.ByteArrayOutputStream; import java.io.File; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; 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;  public class testActivity extends Activity {   public static final int NONE = 0;  public static final int PHOTOHRAPH = 1;// 拍照  public static final int PHOTOZOOM = 2; // 缩放  public static final int PHOTORESOULT = 3;// 结果   public static final String IMAGE_UNSPECIFIED = "image/*";  ImageView imageView = null;  Button button0 = null;  Button button1 = null;   @Override  public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);   imageView = (ImageView) findViewById(R.id.imageID);   button0 = (Button) findViewById(R.id.btn_01);   button1 = (Button) findViewById(R.id.btn_02);    button0.setOnClickListener(new OnClickListener() {    @Override    public void onClick(View v) {     Intent intent = new Intent(Intent.ACTION_PICK, null);     intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED);     startActivityForResult(intent, PHOTOZOOM);    }   });    button1.setOnClickListener(new OnClickListener() {     @Override    public void onClick(View v) {     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);     intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg")));     startActivityForResult(intent, PHOTOHRAPH);    }   });  }   @Override  protected void onActivityResult(int requestCode, int resultCode, Intent data) {   if (resultCode == NONE)    return;   // 拍照   if (requestCode == PHOTOHRAPH) {    //设置文件保存路径这里放在跟目录下    File picture = new File(Environment.getExternalStorageDirectory() + "/temp.jpg");    startPhotoZoom(Uri.fromFile(picture));   }      if (data == null)    return;      // 读取相册缩放图片   if (requestCode == PHOTOZOOM) {    startPhotoZoom(data.getData());   }   // 处理结果   if (requestCode == PHOTORESOULT) {    Bundle extras = data.getExtras();    if (extras != null) {     Bitmap photo = extras.getParcelable("data");     ByteArrayOutputStream stream = new ByteArrayOutputStream();     photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0 - 100)压缩文件     imageView.setImageBitmap(photo);    }    }    super.onActivityResult(requestCode, resultCode, data);  }   public void startPhotoZoom(Uri uri) {   Intent intent = new Intent("com.android.camera.action.CROP");   intent.setDataAndType(uri, IMAGE_UNSPECIFIED);   intent.putExtra("crop", "true");   // aspectX aspectY 是宽高的比例   intent.putExtra("aspectX", 1);   intent.putExtra("aspectY", 1);   // outputX outputY 是裁剪图片宽高   intent.putExtra("outputX", 64);   intent.putExtra("outputY", 64);   intent.putExtra("return-data", true);   startActivityForResult(intent, PHOTORESOULT);  } }



  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical" android:layout_width="fill_parent"
  4. android:layout_height="fill_parent">
  5. <TextView android:layout_width="fill_parent"
  6. android:layout_height="wrap_content" android:text="@string/hello" />
  7. <ImageView android:id="@+id/imageID"
  8. android:adjustViewBounds="true" android:maxWidth="50dip"
  9. android:maxHeight="50dip" android:layout_width="wrap_content"
  10. android:layout_height="wrap_content" />
  11. <Button android:id="@+id/btn_01" android:layout_height="50dip"
  12. android:text="相册" android:layout_width="150dip"/>
  13. <Button android:id="@+id/btn_02" android:layout_height="50dip"
  14. android:text="拍照" android:layout_width="150dip"/>
  15. </LinearLayout>