现在的位置: 首页 > 综合 > 正文

[gallery] 显示sdcard上的图片,及它的缩略图

2018年01月18日 ⁄ 综合 ⁄ 共 2328字 ⁄ 字号 评论关闭

一、  图片存储在SDCARD中,用ImageView来进行显示,

用setImageUri(),但却显示不出来,

改用setImageBitmap来进行显示:

      ImageView iv = (ImageView) findViewById(R.id.image_test);

     Bitmap bit = BitmapFactory.decodeFile("/sdcard/dcd/images/xinwen.gif");

     iv.setImageBitmap(bit);

 

二、 显示它的缩略图。

android真给力啊,2.2后就给我封装了成一个压缩的类------ ThumbnailUtils

主要有三个方法可以调用:
1、extractThumbnail (source, width, height):
 /**
 *
 * 创建一个指定大小的缩略图
 * @param source 源文件(Bitmap类型)
 * @param width  压缩成的宽度
 * @param height 压缩成的高度
 */ 
ThumbnailUtils.extractThumbnail(source, width, height); 
 
 
 
2、extractThumbnail(source, width, height, options):
 /**
 * 创建一个指定大小居中的缩略图
 *
 * @param source 源文件(Bitmap类型)
 * @param width  输出缩略图的宽度
 * @param height 输出缩略图的高度
 * @param options 如果options定义为OPTIONS_RECYCLE_INPUT,则回收
 *
 */ 
 ThumbnailUtils.extractThumbnail(source, width, height, options); 
 
 
3、createVideoThumbnail(filePath, kind):
 
/**
 * 创建一张视频的缩略图
 * 如果视频已损坏或者格式不支持可能返回null
 *
 * @param filePath 视频文件路径  如:/sdcard/android.3gp
 * @param kind kind可以为MINI_KIND或MICRO_KIND
 *
 */ 
ThumbnailUtils.createVideoThumbnail(filePath, kind);

 

三、具体使用例子。

    /**
     * 根据指定的图像路径和大小来获取缩略图
     * 此方法有两点好处:
     *     1. 使用较小的内存空间,第一次获取的bitmap实际上为null,只是为了读取宽度和高度,
     *        第二次读取的bitmap是根据比例压缩过的图像,第三次读取的bitmap是所要的缩略图。
     *     2. 缩略图对于原图像来讲没有拉伸,这里使用了2.2版本的新工具ThumbnailUtils,使
     *        用这个工具生成的图像不会被拉伸。
     * @param imagePath 图像的路径
     * @param width 指定输出图像的宽度
     * @param height 指定输出图像的高度
     * @return 生成的缩略图
     */ 
    private Bitmap getImageThumbnail(String imagePath, int width, int height) { 
        Bitmap bitmap = null; 
        BitmapFactory.Options options = new BitmapFactory.Options(); 
        options.inJustDecodeBounds = true; 
        // 获取这个图片的宽和高,注意此处的bitmap为null  
        bitmap = BitmapFactory.decodeFile(imagePath, 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  
        bitmap = BitmapFactory.decodeFile(imagePath, options); 
        // 利用ThumbnailUtils来创建缩略图,这里要指定要缩放哪个Bitmap对象  
        bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, 
                ThumbnailUtils.OPTIONS_RECYCLE_INPUT); 
        return bitmap; 
    }

 

抱歉!评论已关闭.