zoukankan      html  css  js  c++  java
  • ImageView显示拍照or本地图片

     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>
  • 相关阅读:
    Js默认参数(多参数情况)
    用clipboard.js实现纯JS复制文本到剪切板
    C# 获取当前方法的名称空间、类名和方法名称
    C# 爬虫 Jumony-html解析
    C# 爬虫 正则、NSoup、HtmlAgilityPack、Jumony四种方式抓取小说
    C# Split 字符文本中的字符太多
    jQuery的ajax跨域 Jsonp原理
    C# 未能加载文件或程序集“xxx”或它的某一个依赖项。参数错误。(异常来自 HRESULT:0x80070057 (E_INVALIDARG))
    美化博客园 添加网易云音乐及生成文章目录
    SQLAlchemy详细教程
  • 原文地址:https://www.cnblogs.com/iMirror/p/4038565.html
Copyright © 2011-2022 走看看