Android之使用ThumbnailUtils類來擷取視頻第一幀縮圖

來源:互聯網
上載者:User

標籤:android   thumbnailutils類   擷取視頻第一幀縮圖   

一.首先,來介紹ThumbnailUtils類,此類位於android.media包下,此類有一個公有的無參建構函式,有三個靜態公有方法,一個用來擷取視頻第一幀得到的Bitmap,另外兩個方法用來對圖片進行縮減處理。

1.無參的建構函式:ThumbnailUtils()

2.三個靜態公有方法: 

(1).建立一個影片縮圖的方法:

public static Bitmap createVideoThumbnail(String filePath, int kind) 

第一個參數為視頻檔案的路徑,第二個參數是指定圖片的大小,有兩種選擇,分別為Thumbnails.MINI_KIND和Thumbnails.MICRO_KIND。

(2).建立一個指定大小的Bitmap的兩個方法:

extractThumbnail(Bitmap source, int width, int height, int options)extractThumbnail(Bitmap source, int width, int height)

上述兩種處理Bitmap大小的方法中,其中參數的說明,source為要處理的Bitmap,width為寬度,height為高度,options為操作,如果options定義為ThumbnailUtils.OPTIONS_RECYCLE_INPUT的話,就為回收資源。其中上述兩種方法都可以把截取到的視頻第一幀的Bitmap轉成任意想要的大小。其中最後一個方法還可以擷取記憶卡圖片的縮圖。

3.如果對上面的方法不理解的話,可以自行查看API,查看地址:點擊開啟連結,這裡我附上一幅API中上述方法的說明:



二.在編寫我們的Android項目之前,先要做下面三個步驟:

1.首先,我們先開啟Android模擬器,其中Android系統版本不一樣的模擬器存放資源的路徑也不一樣,例如,Android 2.x系統資源存放路徑為/mnt/sdcard,Android 4.x系統存放的路徑為/storage/sdcard。

2.接著,我們要開啟一個視圖,視圖名稱為File Explorer,我們可以在工具列下的Window—Show View中找到,如所示:

3.開啟之後在下方控制台底下就多出了一個視圖,因為我們已經開啟了模擬器,所以此視圖下就有很多android系統的檔案,因為我的Android模擬器為4.x版本的,所以我存放資源的地址為/storage/sdcard/下,我們在這目錄底下的檔案夾下放置一個視頻,如所示:

註:放置成功後在該目錄底下就有一個視頻檔案,放置不成功將會在控制台彈出訊息,通常都是因為存放該視頻檔案的目錄沒有許可權的問題。



三.接下來我們就可以編寫我們的android項目了,建立一個android項目:

1.首先,開啟布局檔案,對布局檔案進行布局,activity_main檔案代碼如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >        <ImageView         android:id="@+id/imageView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/ic_launcher"        android:layout_gravity="center"/>        <Button         android:id="@+id/button"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="擷取影片縮圖"/></LinearLayout>


2.接著,開啟MainActivity類,代碼如下:

package com.android_thumbnailutils;import java.io.File;import android.app.Activity;import android.graphics.Bitmap;import android.media.ThumbnailUtils;import android.os.Bundle;import android.provider.MediaStore.Video.Thumbnails;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.Toast;public class MainActivity extends Activity {private ImageView imageView;// 聲明ImageView對象private Button button;// 聲明Button對象private Bitmap bitmap;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = (ImageView) findViewById(R.id.imageView);// 擷取布局管理器中的ImageView控制項button = (Button) findViewById(R.id.button);// 擷取布局管理器中的Button對象File file = new File("/storage/sdcard/Movies/music1.mp4");//執行個體化一個File對象,指定檔案路徑為/storage/sdcard/Movies/music1.mp4//如果檔案存在的話if (file.exists()) {bitmap = ThumbnailUtils.createVideoThumbnail(file.getAbsolutePath(), Thumbnails.MICRO_KIND);//建立一個影片縮圖bitmap=ThumbnailUtils.extractThumbnail(bitmap, 200, 200,ThumbnailUtils.OPTIONS_RECYCLE_INPUT);//指定影片縮圖的大小}// 添加按鈕點擊事件監聽器button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 擷取到的bitmap不為空白的話if (bitmap != null) {imageView.setImageBitmap(bitmap);//設定顯示的圖片為影片縮圖Toast.makeText(MainActivity.this, "擷取影片縮圖成功", Toast.LENGTH_SHORT).show();//彈出訊息提示框} else {Toast.makeText(MainActivity.this, "擷取影片縮圖失敗", Toast.LENGTH_SHORT).show();//彈出訊息提示框}}});}}

註:如果你的android模擬器的版本是Android 2.x系統的,檔案路徑應該改為/mnt/sdcard/music1.mp4或者/sdcard/music1.mp4,這點必須要注意,此時你就應該開啟你的模擬器,查看一下視圖下的File Explorer看下你sd卡存放的位置。

3.最後,千萬記得要在AndroidManifest.xml檔案添加訪問sd卡的許可權許可,只需在這個檔案添加這一行代碼即可:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>



四,接下來部署此項目到Android模擬器中,運行效果如下:

點擊擷取影片縮圖按鈕,如所示:



5.以上內容僅供大家學習參考,寫得不好,請見諒,如有錯誤,請指出,謝謝!




著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Android之使用ThumbnailUtils類來擷取視頻第一幀縮圖

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.