Android从相册中获取图片以及路径

时间:2022-08-30 18:16:12

首先是相册图片的获取:

private final String IMAGE_TYPE = "image/*";

private final int IMAGE_CODE = 0;   //这里的IMAGE_CODE是自己任意定义的

//使用intent调用系统提供的相册功能,使用startActivityForResult是为了获取用户选择的图片

Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);

getAlbum.setType(IMAGE_TYPE);

startActivityForResult(getAlbum, IMAGE_CODE);

//重写onActivityResult以获得你需要的信息

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data){

if (resultCode != RESULT_OK) {        //此处的 RESULT_OK 是系统自定义得一个常量

Log.e(TAG,"ActivityResult resultCode error");

return;

}

Bitmap bm = null;

//外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口

ContentResolver resolver = getContentResolver();

//此处的用于判断接收的Activity是不是你想要的那个

if (requestCode == IMAGE_CODE) {

try {

Uri originalUri = data.getData();        //获得图片的uri

bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);        //显得到bitmap图片

这里开始的第二部分,获取图片的路径:

String[] proj = {MediaStore.Images.Media.DATA};

//好像是android多媒体数据库的封装接口,具体的看Android文档

Cursor cursor = managedQuery(originalUri, proj, null, null, null);

//按我个人理解 这个是获得用户选择的图片的索引值

int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

//将光标移至开头 ,这个很重要,不小心很容易引起越界

cursor.moveToFirst();

//最后根据索引值获取图片路径

String path = cursor.getString(column_index);

}catch (IOException e) {

Log.e(TAG,e.toString());

}

}

}

点击添加  按钮选择一张图片,显示效果如下:图片下方为图片的绝对路径以及名字

Android从相册中获取图片以及路径

1.Activity源码:

package com.jun.activity;

import java.io.IOException;

import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class PictureActivity extends Activity {
    private final String IMAGE_TYPE = "image/*";

private final int IMAGE_CODE = 0;   //这里的IMAGE_CODE是自己任意定义的
    
    private Button addPic=null,showPicPath=null;
    
    private ImageView imgShow=null;
    
    private TextView imgPath=null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_picture);
        init();
    }

private void init() {
        // TODO Auto-generated method stub
        
        addPic=(Button) findViewById(R.id.btnClose);
        showPicPath=(Button) findViewById(R.id.btnSend);
        imgPath=(TextView) findViewById(R.id.img_path);
        imgShow=(ImageView) findViewById(R.id.imgShow);
        
        addPic.setOnClickListener(listener);
        
        showPicPath.setOnClickListener(listener);
        
    }
private OnClickListener listener=new OnClickListener(){

@Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        
        
        Button btn=(Button) v; 
        
        switch(btn.getId()){
        
        case R.id.btnClose:
            setImage();
            break;
            
    case R.id.btnSend:
        
            break;
        }
        
    }

private void setImage() {
        // TODO Auto-generated method stub
         //使用intent调用系统提供的相册功能,使用startActivityForResult是为了获取用户选择的图片

Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);

getAlbum.setType(IMAGE_TYPE);

startActivityForResult(getAlbum, IMAGE_CODE);
        
        
    }};
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_picture, menu);
        return true;
    }
    
     protected void onActivityResult(int requestCode, int resultCode, Intent data){

if (resultCode != RESULT_OK) {        //此处的 RESULT_OK 是系统自定义得一个常量

Log.e("TAG->onresult","ActivityResult resultCode error");

return;

}

Bitmap bm = null;

//外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口

ContentResolver resolver = getContentResolver();

//此处的用于判断接收的Activity是不是你想要的那个

if (requestCode == IMAGE_CODE) {

try {

Uri originalUri = data.getData();        //获得图片的uri

bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);        
                    //显得到bitmap图片
                    imgShow.setImageBitmap(bm);

//    这里开始的第二部分,获取图片的路径:

String[] proj = {MediaStore.Images.Media.DATA};

//好像是android多媒体数据库的封装接口,具体的看Android文档

Cursor cursor = managedQuery(originalUri, proj, null, null, null);

//按我个人理解 这个是获得用户选择的图片的索引值

int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

//将光标移至开头 ,这个很重要,不小心很容易引起越界

cursor.moveToFirst();

//最后根据索引值获取图片路径

String path = cursor.getString(column_index);
                    imgPath.setText(path);
                }catch (IOException e) {

Log.e("TAG-->Error",e.toString());

}

}

}
}

2.xml布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

<RelativeLayout
        android:id="@+id/rlTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/titlebar_bg_nor" >

<Button
            android:id="@+id/btnClose"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="6dp"
            android:layout_marginTop="8dp"
            android:background="@drawable/bg_btn"
            android:paddingBottom="2dp"
            android:text="@string/Add"
            android:textColor="#fff"
            android:textSize="12sp" />

<TextView
            android:id="@+id/picture_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
           android:text="@string/picture_title"
            android:textColor="#000"
            android:textSize="20sp"
            android:textStyle="bold" />

<Button
            android:id="@+id/btnSend"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginRight="6dp"
            android:layout_marginTop="8dp"
            android:background="@drawable/bg_btn"
            android:paddingBottom="2dp"
            android:text="@string/show"
            android:textColor="#fff"
            android:textSize="12sp" />
    </RelativeLayout>
    
   <ImageView 
       android:id="@+id/imgShow"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_margin="15dip"
       android:background="@drawable/bg_img_coner"
       android:src="@drawable/b"
         android:layout_below="@+id/rlTitle"
       android:scaleType="fitXY"
       />
    
   <TextView 
       android:id="@+id/img_path"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_below="@+id/imgShow"
       android:layout_margin="15dip"
       android:hint="图片路径"
      />

</RelativeLayout>

http://blog.csdn.net/qq435757399/article/details/8118528

Android从相册中获取图片以及路径的更多相关文章

  1. Android中使用OKHttp上传图片,从相机和相册中获取图片并剪切

    效果:注意:1:网络权限<;;;); intent.putExtra(); ); intent.putExtra(); intent.putExtra(, byteArrayOutputStre ...

  2. iOS--app自定义相册--从自定义的相册中获取图片

    一.获取单张图片 思路: 1.利用UIImagePickerController可以从系统自带的App(照片\相机)中获得图片 2.设置代理,遵守代理协议 注意这个UIImagePickerContr ...

  3. Swift4&period;0 从相册中获取图片和拍照

    第一步 添加协议 UIImagePickerControllerDelegate,UINavigationControllerDelegate   第二步 添加选择方式 let sexActionSh ...

  4. Android从Camera中获取图片的两种方法

    方法一: 此方法会由Camera直接产生照片回传给应用程序,但是返回的是压缩图片,显示不清晰 ? 1 2 3 4 5 6 try {      Intent cameraIntent = new In ...

  5. Android获取SD卡中选中图片的路径(URL)

    最近在做一个图片上传的功能,需要提供上传图片在SD卡中的路径,在网上看了些例子,改改调试成功,代码很简单.其布局文件如下: [html]  view plain copy   <?xml ver ...

  6. java如何从一段html代码中获取图片的src路径

    java如何从一段html代码中获取图片的src路径 package com.cellstrain.icell.Test; import java.util.ArrayList;import java ...

  7. 修正iOS从照相机和相册中获取的图片 方向

    修正iOS从照相机和相册中获取的图片 方向   修正iOS从照相机和相册中获取的图片 方向 使用系统相机拍照得到的图片的默认方向有时不是ImageOrientationDown,而是ImageOrie ...

  8. Android向系统相册中插入图片,相册中会出现两张 一样的图片(只是图片大小不一致)

    向系统相册中插入图片调用此方法时,相册中会出现两张一样的图片 MediaStore.Images.Media.insertImage 一张图片是原图一张图片是缩略图.表现形式为:android4.4. ...

  9. 我的Android进阶之旅------&amp&semi;gt&semi; Android在TextView中显示图片方法

    面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包括图像的文本信息).并简要说明实现方法. 答案:Android SDK支持例如以下显示富文本信息的方式. 1.使用T ...

随机推荐

  1. WCF Security基本概念(转载)

    WCF Security 主要包括 "Transfer Security"."Access Control"."Auditing" 几个部分 ...

  2. STL中map与hash&lowbar;map的比较

    1. map : C++的STL中map是使用树来做查找算法; 时间复杂度:O(log2N) 2. hash_map : 使用hash表来排列配对,hash表是使用关键字来计算表位置; 时间复杂度:O ...

  3. Marsonry

    前言 1 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时 ...

  4. webpack和webpack-dev-server的区别

    第一: webpack只是构建 webpack-dev-server除了构建,还提供web服务   第二:webpack.config.json的路径参数 显然,entry都一样,因为都要知道需要构建 ...

  5. centos 编译安装nginx

    这里选用的是nginx-1.10.1稳定版,其基础依赖库有gcc.gcc-c++.pcre.zlib和openssl. pcre.zlib和openssl这三个依赖库在安装nginx时无需编译安装,下 ...

  6. Problem C&colon; 是否回文数?

    Description 定义Data类,有一个int类型的属性.定义其构造函数.setValue函数和isPalindrome函数,其中setValue函数用于设置属性值,isPalindrome用于 ...

  7. 从零一起学Spring Boot之LayIM项目长成记(六)单聊群聊的实现

    文章传送门: https://my.oschina.net/panzi1/blog/1577007 并没有放弃博客园,只是 t-io 在 oschina发展.用了人家的框架,也得帮人家做做宣传是吧~~

  8. &lbrack;Luogu 1559&rsqb;运动员最佳匹配问题

    Description 题库链接 求 \(2\times N\) 个点的带权二分图最佳匹配. \(1\leq N\leq 20\) Solution 我还是太菜了啊...到现在才学 \(KM\) . ...

  9. Python机器学习笔记 使用scikit-learn工具进行PCA降维

    之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-learn工具来进行PCA降维. 在数据处理中,经常会遇到特征维度比样本数量多得多 ...

  10. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...