安卓获取图片缩略图的两种方式

1、

/**
  * 通过内容提供器来获取图片缩略图
	缺点:必须更新媒体库才能看到最新的缩略图
  * @param context
  * @param cr
  * @param Imagepath
  * @return
  */
  public static Bitmap getImageThumbnail(Context context, ContentResolver cr, String Imagepath) {
            ContentResolver testcr = context.getContentResolver();
            String[] projection = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID, };
            String whereClause = MediaStore.Images.Media.DATA + " = '" + Imagepath + "'";
            Cursor cursor = testcr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, whereClause,null, null);
            int _id = 0;
            String imagePath = "";
            if (cursor == null || cursor.getCount() == 0) {
                    return null;
            }else if (cursor.moveToFirst()) {
                    int _idColumn = cursor.getColumnIndex(MediaStore.Images.Media._ID);
                    int _dataColumn = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
                    do {
                            _id = cursor.getInt(_idColumn);
                            imagePath = cursor.getString(_dataColumn);
                    } while (cursor.moveToNext());
            }
            cursor.close();
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inDither = false;
            options.inPreferredConfig = Bitmap.Config.RGB_565;
            Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(cr, _id, Images.Thumbnails.MINI_KIND,options);
            return bitmap;
    }

2、手动以指定的宽高获取

缺点:比较耗时

	private void getImageThumbnail(String imagePath,int width,int height) {
			Bitmap img_bitmap = null;
			//节约内存
			options.inPreferredConfig = Bitmap.Config.ARGB_4444;/*设置让解码器以最佳方式解码*/
			options.inPurgeable = true;
			options.inInputShareable = true;
			options.inJustDecodeBounds = true;
			//If diTher is true, the decoder will attempt to dither the decoded image
			options.inDither = false;//不进行图片抖动处理
			// 获取这个图片的宽和高,注意此处的bitmap为null
			img_bitmap = BitmapFactory.decodeFile(params[0], options);
			options.inJustDecodeBounds = false;//设为 false 

			//计算缩放比
			int h = options.outHeight;
			int w = options.outWidth;
			int beWidth = w / width;
			int beHeight = h / height;
			int be = 1;
			if (beWidth < beHeight) {
				be = beWidth;
			} else {
				be = beHeight;
			}
			if (be <= 0) {
				be = 1;
			}
			options.inSampleSize = be;
			// 重新读入图片,读取缩放后的bitmap,注意这次要把options.inJustDecodeBounds 设为 false
			img_bitmap = BitmapFactory.decodeFile(params[0], options);
			// 利用ThumbnailUtils来创建缩略图,这里要指定要缩放哪个Bitmap对象  

			img_bitmap = ThumbnailUtils.extractThumbnail(img_bitmap, width, height,
					ThumbnailUtils.OPTIONS_RECYCLE_INPUT);  

			return img_bitmap;
		}
时间: 2024-10-09 20:43:35

安卓获取图片缩略图的两种方式的相关文章

android图片截取的两种方式

    文章主要提供android系统上拍照图片截取和图片 选择截取 两种方式,适用于app头像选择等环境. 拍照截取 打开相机 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent,"自定义"); 截图 Intent intent = getCropImageIntent(data); startActivityForResult(intent, "

strus2中获取表单数据 两种方式 属性驱动 和模型驱动

strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值* 如果一个属性在对象栈,在页面上可以根据name属性进行回显*/ /** * 属性驱动实现的条件:* 1.当前请求的action在栈顶,所以action中的属性就暴漏出来了* 2.获取页面上表单的元素,整合成一个map * 3.调用setValue方法赋值*/ 1 package cn.itcast.struts2.sh; 2 3

JavaWeb后台从input表单获取文本值的两种方式

JavaWeb后台从input表单获取文本值的两种方式 #### index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="text" name="n

jQuery 获取DOM节点的两种方式

jQuery中包裹后的DOM对象实际上是一个数组,要获得纯粹的DOM对象可以有两种方式: 1.使用数组索引方式访问,例如: var dom = $(dom)[0]; 2.使用函数get()访问,例如: var dom = $(dom).get(0); get()函数中的参数为索引号. 3.示例 var div = document.createElement("DIV"); div.innerText = "TEST IS OK!"; document.body.a

通过java类获取项目绝对路径两种方式

经常会遇到通过java类获取项目路径,并且通过该相对路径或者绝对路径加载资源文件的问题.通常最常用的的两种方式是通过classLoader或者class的getResource()方法. public static final String getPath(){ String path1 = Constant.class.getClassLoader().getResource("").getPath(); String path2 = Constant.class.getClassL

26.OpenIdConnect获取用户信息的两种方式

openId在OAuth基础之上,在下面这红框内拿到Authorization Code之后还可以返回IdToken. IdToken和AccessToken一起返回.IdToken就会包括了用户的信息Claims .通过我们的ProfileService返回回去. 也就是这里 设置为True了 ,就会把新用户的信息都包含在IdToken里面返回给用户,第三方拿到IdToken就可以用了不需要再去获取AccessToken,这是一种方式 另外一种方式是IdToken里面不包含用户的信息.它会有一

js获取url参数值的两种方式

js获取url参数值的方法有很多,下面也为大家介绍两种,喜欢的朋友可以测试下,希望对大家有所帮助 方法一:正则分析法 代码如下: function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if

springmvc获取资源文件的两种方式(超简单)

1 比如我们在sc目录下新建一个db.properties文件内容如下 DriverClass=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/testusername = rootpassword =root 2把配置文件交给容器管理在applicationContext.xml加上这一句 <context:property-placeholder location="classpath:db.properties" f

js获取url参数值的两种方式详解

有个url如下: http://passport.csdn.net/account/login?from=http%3a%2f%2fwrite.blog.csdn.net%2fpostedit 我们该如何获取from这个参数的值呢?在网上搜了下方法很简单,如下,第一种是通过正则,第二种通过切串放进数组的方式: 方法一: function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^