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>
时间: 2024-10-22 21:58:04

ImageView显示拍照or本地图片的相关文章

android项目中的拍照和本地图片截图

1,得到保存截图文件的地址 private static final String IMAGE_FILE_LOCATION = Environment.getExternalStorageDirectory()+"/temp.jpg"; private Uri imageUri; imageUri = Uri.fromFile(new File(IMAGE_FILE_LOCATION)); 2.相冊和拍照button的点击事件 // 相冊 imageViewLocalPhoto.set

拍照、本地图片工具类(兼容至Android7.0)

拍照.本地图片工具类:解决了4.4以上剪裁会提示"找不到文件"和6.0动态授予权限,及7.0报FileUriExposedException异常问题. package com.hb.weex.util; import android.Manifest; import android.app.Activity; import android.app.Dialog; import android.content.ClipData; import android.content.Conten

怎样扩展EasyUI在页面中马上显示选中的本地图片

在编写前台页面的时候,有时须要将选中的图片夹杂着其它信息一起上传到服务端,在选着本地图片的时候,为了获得更好的效果,须要将该图片显示在页面上. 最初思路有两个.详细例如以下: 1.获取选中文件的二进制数据再传递给画板,画出图片来. 2.获取选中文件的传递给Img标签. 经过測试,得到例如以下结果: 1.Img标签的src无法指向本地路径的文件,这应该是基于安全考虑的结果吧. 2.通过File API 读取的文件二进制数据无法直接传递给Cancav画板画出选中图片,这也许也是基于安全考虑的结果.

如何扩展EasyUI在页面中立即显示选中的本地图片

在编写前台页面的时候,有时需要将选中的图片夹杂着其他信息一起上传到服务端,在选着本地图片的时候,为了获得更好的效果,需要将该图片显示在页面上. 最初思路有两个,具体如下: 1.获取选中文件的二进制数据再传递给画板,画出图片来. 2.获取选中文件的传递给Img标签. 经过测试,得到如下结果: 1.Img标签的src无法指向本地路径的文件,这应该是基于安全考虑的结果吧. 2.通过File API 读取的文件二进制数据无法直接传递给Cancav画板画出选中图片,这或许也是基于安全考虑的结果. 3.经过

ImageView 显示本地和网上的图片(转)

Android用ImageView显示本地和服务器的图片(转) ImageView是Android程序中经常用到的组件,它将一个图片显示到屏幕上.在UI xml定义一个ImageView如下: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.myimage); ImageView image1 = (ImageView) fi

Android用ImageView显示本地和网上的图片

ImageView是Android程序中经常用到的组件,它将一个图片显示到屏幕上. 在UI xml定义一个ImageView如下: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.myimage); ImageView image1 = (ImageView) findViewById(R.myImage.image); //

Android 拍照上传和拍照本地显示,拍照剪切上传,选取本地图片剪切上传

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { switch (requestCode) { case TAKE_PICTURE: //将保存在本地的图片取出并缩小后显示在界面上 Bitmap b

Android 实例讲解添加本地图片和调用系统拍照图片

在项目的开发过程我们离不开图片,而有时候需要调用本地的图片,有时候需要调用拍照图片.同时实现拍照的方法有两种,一种是调用系统拍照功能,另一种是自定义拍照功能.而本博文目前只讲解第一种方法,第二种方法后期在加以讲解. 添加本地图片和调用系统拍照图片主要是通过调用acitivity跳转startActivityForResult(Intent intent, int requestCode)方法和activity返回结果onActivityResult(int requestCode, int re

Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

首先我们先看第一个界面吧,使用将手机中的图片扫描出来,然后根据图片的所在的文件夹将其分类出来,并显示所在文件夹里面的一张图片和文件夹中图片个数,我们根据界面元素(文件夹名, 文件夹图片个数,文件夹中的一张图片)使用一个实体对象ImageBean来封装这三个属性 package com.example.imagescan; /** * GridView的每个item的数据对象 * * @author len * */ public class ImageBean{ /** * 文件夹的第一张图片路