Android:通过ThumbnailUtils类获取视频文件的缩略图
jopen
10年前
在视频播放器上经常会看到,有很多的视频缩略图,本文讲的就是通过ThumbnailUtils类获取视频文件的缩略图;
运行截图如下:
代码如下:
MainActivity.java:
package com.vrinux.thumbnailutilsdemo; import android.app.Activity; import android.graphics.Bitmap; import android.media.ThumbnailUtils; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.widget.ImageView; public class MainActivity extends Activity { //定义一个ImageView对象imgObj; private ImageView imgObj; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取对象imgObj; imgObj = (ImageView) findViewById(R.id.imgid); //定义一个视频文件路径; String filePath = null; //视频文件的名字; String filename = "video.3gp"; //判断SDCard是否挂载;由于Android版本的挂载路径不尽相同,所以建议使用一下的方法判断; if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { //获取SDCard根的路径 String sdPath = Environment.getExternalStorageDirectory().getPath(); //将SDCard根路径和文件名组装得到视频文件的路径; filePath = sdPath + "/" + filename; //调用下面定义的方法,获得指定大小的视频截图; //最后的参数本人不太清楚是什么意思,只是这么用,其源码并非开源; Bitmap bitmap = getVidioBitmap(filePath, 400, 400, MediaStore.Images.Thumbnails.MICRO_KIND); //将获得的位图用imgObj显示; imgObj.setImageBitmap(bitmap); } } public Bitmap getVidioBitmap(String filePath, int width, int height, int kind) { //定義一個Bitmap對象bitmap; Bitmap bitmap = null; //ThumbnailUtils類的截取的圖片是保持原始比例的,但是本人發現顯示在ImageView控件上有时候有部分沒顯示出來; //調用ThumbnailUtils類的靜態方法createVideoThumbnail獲取視頻的截圖; bitmap = ThumbnailUtils.createVideoThumbnail(filePath, kind); //調用ThumbnailUtils類的靜態方法extractThumbnail將原圖片(即上方截取的圖片)轉化為指定大小; //最後一個參數的具體含義我也不太清楚,因為是閉源的; bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); //放回bitmap对象; return bitmap; } }
activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ImageView android:id="@+id/imgid" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>来自:http://blog.csdn.net/vrinux/article/details/44961617