android 通过uri等方式读取图片资源

android:图片处理(本地uri图片显示,本地uri转为bitmap和网络uri转为bitmap显示)  2012-04-06 10:24:26|  分类: android 图片相关 |  标签: |字号大
中
小 订阅 
设置imageView的图片:

1.参数为本地Uri

imageView.setImageURI(uri2); // content://media/external/images/media/63    

 比如调用系统相机 返回uri2。   

 onActivityResult(int requestCode, int resultCode, Intent data)   

 Uri uri2 = data.getData();  

2.参数为Bitmap

imageView.setImageBitmap(...); 

A.把本地图片转为bitmap,

 Uri uri2 = data.getData();  

 String selectedImagePath2 = getPath(uri2); //selectedImagePath2=/mnt/sdcard/DCIM/100MEDIA/IMAG0054.jpg; 

  secondPhoto.setImageBitmap(BaseMean.lessenUriImage(selectedImagePath2));  

/**
       * change uri to path string
       * @param uri
       * @return
       */

public String getPath(Uri uri)  
       {    
          String[] projection = {MediaStore.Images.Media.DATA };    
          Cursor cursor = managedQuery(uri, projection, null, null, null);    
          int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);    
          cursor.moveToFirst();    
          return cursor.getString(column_index);    
       } 

/**
   * use to lessen pic 50%
   * @param path sd card path
   * @return bitmap
   */
  public final static Bitmap lessenUriImage(String path)
  { 
   BitmapFactory.Options options = new BitmapFactory.Options(); 
   options.inJustDecodeBounds = true; 
   Bitmap bitmap = BitmapFactory.decodeFile(path, options); //此时返回 bm 为空 
   options.inJustDecodeBounds = false; //缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可
   int be = (int)(options.outHeight / (float)320); 
   if (be <= 0) 
    be = 1;
   options.inSampleSize = be; //重新读入图片,注意此时已经把 options.inJustDecodeBounds 设回 false 了 
   bitmap=BitmapFactory.decodeFile(path,options); 
   int w = bitmap.getWidth(); 
   int h = bitmap.getHeight(); 
   System.out.println(w+" "+h); //after zoom
   return bitmap;
  }

B.把网络图片转为bitmap

Bitmap photo;

String url_s;

url_s = (String)mData.get(position).get("image_url")+".size/m1.jpg"; 

photo= BaseMean.returnBitMap(url_s); 

listItemView.mPhoto.setImageBitmap(photo);

/**
   * return a bitmap from service
   * @param url
   * @return bitmap type
   */
  public final static Bitmap returnBitMap(String url) {   
   URL myFileUrl = null;   
   Bitmap bitmap = null;   
   
   try {
    myFileUrl = new URL(url);    
    HttpURLConnection conn;
  
    conn = (HttpURLConnection) myFileUrl.openConnection();
   
    conn.setDoInput(true);   
    conn.connect(); 
    InputStream is = conn.getInputStream();   
    bitmap = BitmapFactory.decodeStream(is);  
    
   } catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }  catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   return bitmap;  
   }

Android中,如果你想通过`RecyclerView`的音乐列表获取本地音乐的专辑图片,你可以使用`ContentResolver`和`MediaStore`提供的方法来获取。`MediaStore`是一个包含了所有媒体文件信息的数据库,其中就包括了音乐文件的信息。以下是一个基本的步骤来获取音乐的专辑图片: 1. 获取`ContentResolver`对象。 2. 使用`MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI`来查询外部存储中的音乐专辑信息。 3. 使用`query`方法来查询包含专辑图片URI的列。 4. 从`Cursor`中获取对应的URI,并且根据这个URI来获取实际的图片数据。 以下是一个示例代码片段: ```java // 获取ContentResolver对象 ContentResolver contentResolver = getContentResolver(); // 查询音乐专辑信息,包括专辑图片URI String[] projection = { MediaStore.Audio.Albums.ALBUM_ART }; Cursor cursor = contentResolver.query( MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, projection, null, null, null); if (cursor != null && cursor.moveToFirst()) { // 获取专辑图片URI String albumArtUri = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART)); // 这里的albumArtUri图片文件的URI,你可以使用它来获取图片数据 // 例如,可以使用BitmapFactory.decodeFile(albumArtUri)来解码图片文件 cursor.close(); } // 注意:这段代码没有处理异常和资源释放,请在实际应用中添加相应的异常处理和资源管理 ``` 请注意,这段代码应该在拥有读取外部存储权限的Android应用程序中运行。而且,由于系统对敏感权限的管理,你需要在你的应用的`AndroidManifest.xml`中添加相应的权限声明,并且根据Android版本可能需要动态请求权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值