android 查询所有图片和视频,Android系统详解之获取图片和视频的缩略图

从Android 2.2开始系统新增了一个缩略图ThumbnailUtils类,位于framework的android.media.ThumbnailUtils位置,可以帮助我们从mediaprovider中获取系统中的视频或图片文件的缩略图,该类提供了三种静态方法可以直接调用获取。

1.

static Bitmap createVideoThumbnail(String filePath, int kind) //获取视频文件的缩略图,第一个参数为视频文件的位置,比如/sdcard/android123.3gp,而第二个参数可以为MINI_KIND或 MICRO_KIND最终和分辨率有关

2.

static Bitmap extractThumbnail(Bitmap source, int width, int height, int options) //直接对Bitmap进行缩略操作,最后一个参数定义为OPTIONS_RECYCLE_INPUT ,来回收资源

3.

static Bitmap extractThumbnail(Bitmap source, int width, int height) // 这个和上面的方法一样,无options选项

获取手机里视频缩略图:

public static Bitmap getVideoThumbnail(ContentResolver cr, Uri uri){          Bitmap bitmap = null;          BitmapFactory.Options options = new BitmapFactory.Options();          options.inDither = false;          options.inPreferredConfig = Bitmap.Config.ARGB_8888;          Cursor cursor = cr.query(uri,new String[] { MediaStore.Video.Media._ID }, null, null, null);                 if (cursor == null || cursor.getCount() == 0) {              return null;          }          cursor.moveToFirst();          String videoId = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media._ID));  //image id in image table.s          if (videoId == null) {          return null;          }          cursor.close();          long videoIdLong = Long.parseLong(videoId);          bitmap = MediaStore.Video.Thumbnails.getThumbnail(cr, videoIdLong,Images.Thumbnails.MICRO_KIND, options);            return bitmap;          }

获得指定目录sdcard里的视频缩略图:

import java.io.File;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.media.ThumbnailUtils;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.widget.ImageView;/** * 获取图片和视频的缩略图 * 这两个方法必须在2.2及以上版本使用,因为其中使用了ThumbnailUtils这个类 */public class AndroidTestActivity extends Activity{ private ImageView imageThumbnail; private ImageView videoThumbnail; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState){  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  imageThumbnail = (ImageView) findViewById(R.id.image_thumbnail);  videoThumbnail = (ImageView) findViewById(R.id.video_thumbnail);  String imagePath = Environment.getExternalStorageDirectory()    .getAbsolutePath()    + File.separator    + "photo"    + File.separator    + "yexuan.jpg";  String videoPath = Environment.getExternalStorageDirectory()    .getAbsolutePath()    + File.separator    + "video"    + File.separator    + "醋点灯.avi";    imageThumbnail.setImageBitmap(getImageThumbnail(imagePath, 60, 60));  videoThumbnail.setImageBitmap(getVideoThumbnail(videoPath, 60, 60,    MediaStore.Images.Thumbnails.MICRO_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; } /**  * 获取视频的缩略图  * 先通过ThumbnailUtils来创建一个视频的缩略图,然后再利用ThumbnailUtils来生成指定大小的缩略图。  * 如果想要的缩略图的宽和高都小于MICRO_KIND,则类型要使用MICRO_KIND作为kind的值,这样会节省内存。  * @param videoPath 视频的路径  * @param width 指定输出视频缩略图的宽度  * @param height 指定输出视频缩略图的高度度  * @param kind 参照MediaStore.Images.Thumbnails类中的常量MINI_KIND和MICRO_KIND。  *            其中,MINI_KIND: 512 x 384,MICRO_KIND: 96 x 96  * @return 指定大小的视频缩略图  */ private Bitmap getVideoThumbnail(String videoPath, int width, int height,   int kind){  Bitmap bitmap = null;  // 获取视频的缩略图  bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, kind);  System.out.println("w"+bitmap.getWidth());  System.out.println("h"+bitmap.getHeight());  bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,    ThumbnailUtils.OPTIONS_RECYCLE_INPUT);  return bitmap; } }布局:

"1.0" encoding="utf-8"?>"http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    "fill_parent"        android:layout_height="wrap_content"        android:text="图片缩略图" />    "@+id/image_thumbnail"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    "fill_parent"        android:layout_height="wrap_content"        android:text="视频缩略图" />    "@+id/video_thumbnail"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

node将图片转换成html文件,node+puppeteer将整个网页html转换为图片并保存【滚动截屏】...

Puppeteer 是 Chrome 开发团队在 2017 年发布的一个 Node.js 包&#xff0c;用来模拟 Chrome 浏览器的运行。demo只支持将简单不需要翻页&#xff0c;不需要登陆的页面转换为图片需要node环境&#xff0c;以及npm或cnpm包管理工具(自行百度)开始进入一个新的项目目录&#xff0…

html hover效果下拉个框,关于下拉菜单(CSS)中,“:hover”样式的设置问题?

各位大大&#xff0c;请帮忙解决一下这个问题&#xff0c;先谢谢&#xff01;由于之前的代码不是全部帖出&#xff0c;可能造成一点信息误解。以下是针对这个问题另外写的代码&#xff1a;.nav {width: 50px;height: 50px;overflow:hidden;background-color: #09F;transition: …

计算机基础知识离线作业答案,浙大远程教育计算机离线作业1.计算机基础知识题...

浙大远程教育计算机离线作业1.计算机基础知识题第1章 计算机基础知识(单选题)这些题目必须做一遍&#xff0c;来自统考题库(期末考试题也多半出在这里)&#xff0c;参考答案在另一个Word文档中(上传自己做的答案后才可以下载…)。据说&#xff0c;统考题库中大约有10,000测试题…

go 生成hash_go基础之map-写在前面(一)

为什么分析map在计算机编程语言当中&#xff0c;用的最多的数据结构估计就是map。map以他近乎o(1)的查找效率和修改效率让他在大多数场景下都比较受青睐。map的常规的实现方式都是hash其他数据结构&#xff0c;如java是hash红黑树&#xff0c;而我现在即将要分析的go的实现方式…

大学数学建模大赛是用计算机,北京大学第十届“江泽涵杯”数学建模与计算机应用竞赛试题...

消息来源&#xff1a;http://www.math.pku.edu.cn:8000/news/read.php?newsid8014A题&#xff1a;投篮问题投篮是篮球运动中一项关键性技术&#xff0c;是一项重要的得分手段。在篮球赛中有三种特殊的投篮方式&#xff0c;“三分球”、“两分球”和“一分球(罚篮)”。其中&…

dynamo方程怎么写_【简明自控】为什么特征方程如此重要

简明自动控制——为什么特征方程如此重要。热场视频&#xff1a;自平衡杆-双轴反作用轮倒立摆_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com顶个棍子&#xff01;具有主动脚轮的全向移动机器人_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com我自行车怎么少…

用户计算机可以通过电话拨号,用户计算机可以通过大型局域网、小型局域网、无线连接、电话拨号和()等方式接入Internet。...

_在保险合同中&#xff0c;用于体现保险利益载体的保险对象条款&#xff0c;被称为()条款。何为C/H比&#xff1f;原料中的C/H比与原性能的关系是什么&#xff1f;选址意见书、规划条件、建设用地规划许可证、建设工程规划许可证的有效期为()福建木偶戏颇负盛名&#xff0c;以(…

和佳股份有没有纳米机器人_新高赛复赛入围项目(49)一种纳米硅质绝热材料及其制备方法...

点击上方“蓝字”关注我们“2020中国山东新旧动能转换高价值专利培育大赛”(简称“新高赛”)是由山东省市场监督管理局(知识产权局)主办&#xff0c;由山东省知识产权事业发展中心、知识产权出版社有限责任公司共同承办的以新旧动能转换高价值专利培育为主题的创新大赛。新高赛…

分数乘整数计算机在线应用,分数乘整数应用题.doc

分数乘法应用题【知识要点】求一个数的几分之几是多少和求一个数的几倍是多少的分数应用题的解题思路和解答方法。1、一本书100页&#xff0c;看了&#xff0c;看了多少页&#xff1f;想&#xff1a;看了&#xff0c;是看了 的&#xff0c;就是把 看作单位“1”&#xff0c;求看…

mastercam加工报表生成_2020北京加工中心编程培训工厂教学行业

2020北京加工中心编程培训工厂教学行业河北德玛数控培训自办工厂 全程四轴五轴实践 学生直接面对客户 承揽加工各种异形件复杂件 终身技术支持 可勤工俭学 解决企业各种技术问题&#xff0c;每个校区都有实训车间&#xff0c;实训图档不限、不限、时间不限、并且不另收费&#…

背景调查 跳槽_分享 | 录用背景调查,查的到底是什么?

招聘对于HR而言&#xff0c;是一项常规工作&#xff0c;同时也是一项非常重要的工作&#xff0c;招聘有一系列的步骤和程序&#xff0c;每一道步骤和程序都必不可少&#xff0c;显得那么的重要&#xff0c;这其中包括我们常说的笔试、面试、体检&#xff0c;还包括不常说的正式…

html链接word,word添加网址超链接方法

word添加网址超链接方法大家对于超链接都了解吗&#xff1f;那么在word中应该如何设置超链接呢&#xff1f;下面是小编分享给大家的word添加网址超链接方法&#xff0c;希望对大家有帮助。1、直接拖动选定文本这个方法是最简单的方法&#xff0c;在word文档中直接拖动鼠选定的文…

.class文件转换.java_Java中的动态链接VS操作系统动态链接

在操作系统OS中为了优化内存的使用会采用一种动态链接方式&#xff0c;一个文件想要在操作系统中运行必须经过编译、汇编译、链接、装载等步骤。可以参考Java程序是怎么跑起来的。本篇主要讲解Java栈帧中动态链接部分与操作系统的的动态链接的区别与联系操纵系统为什么需要动态…

计算机组成原理与应用,计算机组成原理简答与应用

简答与应用1&#xff0e;何谓中断&#xff1f;&#xff1f;中断是由外围设备或其他非预期的急需处理的事件引起的&#xff0c;CPU暂时中断正在执行的程序&#xff0c;转至另一服务程序去处理这一事件&#xff0c;待事件处理完毕后返回原程序继续执行。2.(不算CPU中的寄存器级)存…

宏观经济学gdp计算方法_宏观经济学考研的重要考点

宏观经济学考研重要考点西方国民收入核算宏观经济学的特点;国内生产总值;核算国民收入的两种算法(支出法和收入法);国内生产总值;个人可支配收入;国民收入的基本公式;名义GDP和实际GDP。要求&#xff1a;重点掌握本章基本概念及计算。简单国民收入决定理论均衡产出;凯恩斯的消费…

大学计算机基础试题 选择题,大学计算机基础试题选择题

大学计算机基础试题选择题第一章1. 世界上第一台全自动电子数字计算机ENIAC的诞生时间是( )A. 1945年 B. 1946年 C. 1948年 D. 1949年2. 第一位提出“存储程序”思想的科学家是( )A. 图灵 B. 莱布尼茨 C. 冯诺伊曼 D. 帕斯卡3. 电子计算机四个发展阶段的划分依据是( )不同A. 电…

json符号解释大全_牛年汪姓男孩高端大气的名字大全

牛年汪姓男孩高端大气的名字大全 张桉宁起名分享牛年汪姓男孩高端大气的名字大全&#xff1a;给男孩起名有很多的讲究&#xff0c;需要从多个方面考虑。牛年汪姓男孩如何起一个高端大气的好名字&#xff0c;是家长朋友们都十分重视的。给牛年的汪姓男孩起一个高端的名字&#x…

变电站计算机在线监控系统,变电站环境在线监测系统

原标题&#xff1a;变电站环境在线监测系统概述随着计算机技术、网络通讯技术以及电力系统保护技术的发展&#xff0c;配电室的自动化运行水平不断提高&#xff0c;大大减少了人为操作&#xff0c;使配电室的无人值守逐步变成了可能。配电的可靠和安全是整个电能管理系统中的一…

什么意思是谁_舔狗是什么意思?如果不是真的喜欢谁又愿意做舔狗呢出处?

[海峡网]网络上面经常会出现一些新的词句&#xff0c;比如最近舔狗这个词就经常出现在大家的视线中。相信很多小伙伴都知道&#xff0c;最近关于虎牙的包子的事情也是挺多的&#xff0c;不过关于包桑的梗也是很多&#xff0c;那么关于包桑的这句“如果不是真的喜欢&#xff0c;…

计算机控制面板图标显示,Win8桌面如何有计算机/控制面板图标

Win8桌面如何有计算机/控制面板图标2013年06月04日 00:44作者&#xff1a;马承平编辑&#xff1a;马承平文章出处&#xff1a;泡泡网原创分享泡泡网系统工具频道6月4日 全新Windows8系统给我们带来不仅是超炫的动态磁贴展示&#xff0c;更有新增超级按钮项&#xff0c;它大大集…