博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ImageView显示拍照or本地图片
阅读量:4553 次
发布时间:2019-06-08

本文共 7190 字,大约阅读时间需要 23 分钟。

1 
11 12
18
24
32 33
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中图片设置成null100             photo = null;    101         }    102     }103 104     @Override105     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 
2
6 7
10 11
12
13 14
19
22
23
24 25
26
27 28 29 30

 

转载于:https://www.cnblogs.com/iMirror/p/4038565.html

你可能感兴趣的文章
【EXCEL】指定の項目の内容一覧を表示
查看>>
Head first java chapter 4 对象的行为
查看>>
luogu_4503【题解】企鹅QQ 哈希
查看>>
linux 面试
查看>>
Linux:Gentoo系统的安装笔记(三)
查看>>
打开IE窗口并最大化显示
查看>>
Windows API SendMessage 和 PostMessage 内部实现
查看>>
服务器发送邮件出现Could not connect to SMTP host错误 解决办法
查看>>
sklearn.preprocessing.LabelBinarizer
查看>>
C teaching
查看>>
分隔指定内容,提取章节数
查看>>
this point
查看>>
leetcode 30 Substring with Concatenation of All Words
查看>>
验证登录信息是否合法
查看>>
线程池
查看>>
git版本控制器的基本使用
查看>>
Redis 笔记与总结4 set 和 zset 类型
查看>>
jQuery Ajax 回调函数中调用$(this)的问题 [ 转 ]
查看>>
thymeleaf:字符串拼接+输出单引号
查看>>
springboot:集成fastjson(教训)
查看>>