• 读取相册、拍照


    这两天在做项目时,做到上传图片功能一块时,碰到两个问题,一个是如何获取所选图片的路径,一个是如何压缩图片,在查了一些资料和看了别人写的后总算折腾出来了,在此记录一下。

    首先既然要选择图片,我们就先要获取本地所有的图片,Android已经为我们封装好了该意图。

    1
    2
    3
    4
    5
    1 Intent intent = new Intent(Intent.ACTION_PICK, null);//从列表中选择某项并返回所有数据
    2 intent.setDataAndType(
    3                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,//得到系统所有的图片
    4                    "image/*");//图片的类型,image/*为所有类型图片
    5 startActivityForResult(intent, PHOTO_GALLERY);

    然后我们重写onActivityResult方法。

    在Android1.5后系统会调用MediaScanner服务进行后台扫描,索引歌曲,图片,视频等信息,并将数据保存在android.provider.MediaStore.Images.Thumbnails 和android.provider.MediaStore.Video.Thumbnails这两个数据库中。

    所以我们需要使用Activity.managedQuery(uri, projection, selection, selectionArgs, sortOrder)方法从数据中获取相应数据。

    uri:  需要返回的资源索引

    projection: 用于标识有哪些数据需要包含在返回数据中。

    selection: 作为查询符合条件的过滤参数,类似于SQL语句中Where之后的条件判断。

    selectionArgs: 同上。

    sortOrder: 对返回信息进行排序。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    1      @Override
     2      protected void onActivityResult(int requestCode, int resultCode, Intent data)
     3      {
     4          switch (requestCode)
     5          {
     6          //请求为获取本地图品时
     7          case PHOTO_GALLERY:
     8          {
     9                 //图片信息需包含在返回数据中
    10                 String[] proj ={MediaStore.Images.Media.DATA};
    11                 //获取包含所需数据的Cursor对象                 
    12                 @SuppressWarnings("deprecation")
    13                 Cursor cursor = managedQuery(data.getData(), proj, null, null, null);
    14                 //获取索引
    15                 int photocolumn =  cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    16                 //将光标一直开头
    17                 cursor.moveToFirst();
    18                 //根据索引值获取图片路径
    19                 String path = cursor.getString(photocolumn);
    20
    21
    22              break;
    23          }
    24         
    25          default:
    26              break;
    27          }
  • 相关阅读:
    Java集合框架--Collection
    xhprof windows下安装和使用(转载)
    什么是socket
    访问国外网络的卡顿问题
    关于go的通信通道channel——chan的一些问题
    关于go的入门书籍——go自学的序
    Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} ;
    php的一个有意思的命令:-S
    看看第一篇随笔的效果
    Mysql limit
  • 原文地址:https://www.cnblogs.com/allin1579/p/4940341.html
Copyright © 2020-2023  润新知