Android 调用相册 拍照 实现系统控件缩放 切割图片

来源:互联网 发布:淘宝一钻卖家发布数量 编辑:程序博客网 时间:2024/05/29 19:17

http://blog.csdn.net/xys289187120/article/details/6575830

android 下如果做处理图片的软件 可以调用系统的控件 实现缩放切割图片 非常好的效果 今天写了一个demo分享给大家 嘿嘿。

[java] view plaincopyprint?
  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 testActivityextends Activity {
  16. public staticfinal int NONE = 0;
  17. public static final int PHOTOHRAPH = 1;// 拍照
  18. public staticfinal 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. }

[html] view plaincopyprint?
  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. <ImageViewandroid: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>


原创粉丝点击