1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical"
6 android:paddingBottom="@dimen/activity_vertical_margin"
7 android:paddingLeft="@dimen/activity_horizontal_margin"
8 android:paddingRight="@dimen/activity_horizontal_margin"
9 android:paddingTop="@dimen/activity_vertical_margin"
10 tools:context="com.example.imageview.MainActivity" >
11
12 <Button
13 android:layout_width="fill_parent"
14 android:layout_height="wrap_content"
15 android:text="选择图片"
16 android:id="@+id/selectImage"
17 />
18 <Button
19 android:layout_width="fill_parent"
20 android:layout_height="wrap_content"
21 android:text="拍照图片"
22 android:id="@+id/captureImage"
23 />
24 <ImageView
25 android:id="@+id/imageView"
26 android:maxHeight="1000dip"
27 android:maxWidth="1000dip"
28 android:layout_width="200dp"
29 android:layout_height="200dp"
30 android:layout_gravity="center_horizontal"
31 android:scaleType="fitCenter" />
32
33 </LinearLayout>
1 package com.example.imageview;
2
3 import java.io.ByteArrayOutputStream;
4 import java.io.File;
5 import java.io.IOException;
6
7 import android.app.Activity;
8 import android.app.AlertDialog;
9 import android.app.AlertDialog.Builder;
10 import android.app.Dialog;
11 import android.content.ContentResolver;
12 import android.content.DialogInterface;
13 import android.content.Intent;
14 import android.database.Cursor;
15 import android.graphics.Bitmap;
16 import android.graphics.BitmapFactory;
17 import android.net.Uri;
18 import android.os.Bundle;
19 import android.os.Environment;
20 import android.provider.MediaStore;
21 import android.util.Log;
22 import android.view.Menu;
23 import android.view.MenuItem;
24 import android.view.View;
25 import android.view.View.OnClickListener;
26 import android.widget.Button;
27 import android.widget.ImageView;
28 import android.widget.Toast;
29
30
31 public class MainActivity extends Activity implements OnClickListener {
32
33 private Button selectImage, uploadImage,captureImage;
34 private ImageView imageView;
35 private Bitmap photo = null;
36 private String picPath = null;
37 private File file = null;
38
39 @Override
40 protected void onCreate(Bundle savedInstanceState) {
41 super.onCreate(savedInstanceState);
42 setContentView(R.layout.activity_main);
43
44 selectImage = (Button) this.findViewById(R.id.selectImage);
45 captureImage=(Button) this.findViewById(R.id.captureImage);
46 selectImage.setOnClickListener(this);
47 uploadImage.setOnClickListener(this);
48 captureImage.setOnClickListener(this);
49 imageView = (ImageView) this.findViewById(R.id.imageView);
50 }
51
52 @Override
53 public void onClick(View v) {
54 // TODO Auto-generated method stub
55 switch (v.getId()) {
56 case R.id.selectImage:
57 Intent intent = new Intent();
58 intent.setType("image/*");
59 intent.setAction(Intent.ACTION_GET_CONTENT);
60 startActivityForResult(intent, 1);
61 break;
62 case R.id.captureImage: //照相后显示图片
63 destoryBimap();
64 String state = Environment.getExternalStorageState();
65 if (state.equals(Environment.MEDIA_MOUNTED)) {
66 String saveDir = Environment.getExternalStorageDirectory()
67 + "/temple";
68 File dir = new File(saveDir);
69 if (!dir.exists()) {
70 dir.mkdir();
71 }
72 file = new File(saveDir, "temp.jpg");
73 file.delete();
74 if (!file.exists()) {
75 try {
76 file.createNewFile();
77 } catch (IOException e) {
78 e.printStackTrace();
79 Toast.makeText(this,"创建临时文件失败",Toast.LENGTH_LONG).show();
80 return;
81 }
82 }
83 Intent intents = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
84 intents.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
85 startActivityForResult(intents, 2);
86 } else {
87 Toast.makeText(this,"存储卡不存在" , Toast.LENGTH_LONG) .show();
88 }
89 break;
90 default:
91 break;
92 }
93 }
94
95 private void destoryBimap()
96 {
97 imageView.setImageBitmap(null);
98 if (photo != null && !photo.isRecycled()) {
99 photo.recycle(); //回收内存,一定要将 imageView中图片设置成null
100 photo = null;
101 }
102 }
103
104 @Override
105 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
106 if (requestCode ==1) {
107 if (data != null) {
108 Uri uri = data.getData();
109 try {
110 String[] pojo = { MediaStore.Images.Media.DATA };
111 Cursor cursor = getContentResolver().query(uri, pojo, null, null, null);
112 ContentResolver cr = this.getContentResolver();
113 int colunm_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
114 cursor.moveToFirst();
115 String path = cursor.getString(colunm_index);
116
117 if (path.endsWith("jpg") || path.endsWith("png")) {
118 picPath = path;
119 Log.e("图片路径", picPath);
120
121 //Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
122 //imageView.setImageBitmap(bitmap);
123 //Bitmap bitmap = MediaStore.Images.Media.getBitmap(cr, uri);
124
125 Bitmap bitmap = BitmapFactory.decodeFile(picPath);
126 imageView.setImageBitmap(bitmap);
127 Toast.makeText(this, "图片路径"+ picPath, 1000).show();
128 }
129 else {
130 alert("您选择的不是有效的图片");
131 }
132 } catch (Exception e) {
133 alert("选择图片错误");
134 }
135 }
136 else{
137 alert("data is null");
138 }
139 }
140 else if (requestCode ==2){ //拍照后执行
141 if (file != null && file.exists()) {
142 BitmapFactory.Options options = new BitmapFactory.Options();
143 options.inSampleSize = 2;
144 photo = BitmapFactory.decodeFile(file.getPath(), options);
145 imageView.setImageBitmap(photo);
146 //picPath = file.getPath();
147 } else {
148 alert("拍照错误");
149 }
150 }
151
152 super.onActivityResult(requestCode, resultCode, data);
153 }
154
155 private void alert(String str) {
156 Dialog dialog = new AlertDialog.Builder(this).setTitle("提示")
157 .setMessage(str)
158 .setPositiveButton("确定", new DialogInterface.OnClickListener() {
159 public void onClick(DialogInterface dialog, int which) {
160 picPath = null;
161 }
162 }).create();
163 dialog.show();
164 }
165 }
1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.example.imageview"
4 android:versionCode="1"
5 android:versionName="1.0" >
6
7 <uses-sdk
8 android:minSdkVersion="16"
9 android:targetSdkVersion="18" />
10
11 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
12 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
13
14 <application
15 android:allowBackup="true"
16 android:icon="@drawable/ic_launcher"
17 android:label="@string/app_name"
18 android:theme="@style/AppTheme" >
19 <activity
20 android:name=".MainActivity"
21 android:label="@string/app_name" >
22 <intent-filter>
23 <action android:name="android.intent.action.MAIN" />
24
25 <category android:name="android.intent.category.LAUNCHER" />
26 </intent-filter>
27 </activity>
28 </application>
29
30 </manifest>