关于安卓截取缩略图的方法和遇到的问题

最近的一个项目,需要写到录制视频,然后截取缩略图显示的功能。在以前的写法是调用系统自带的摄像的功能,但是效果不佳。

后来打算自己写一个录制视频的方法,成功了,并保存在本地路径。

然而在提取缩略图的时候遇到了一系列的问题。

某大神告诉我可以从数据库中读出来。但是自己的水平有些LOW,还没有研究过数据库的读写文件。

于是乎网上查,找到的一个方法是MediaMetadataRetriever这个类。

废话不多说,贴上代码。

public class MainActivity extends Activity {
	private Button btn;
	private ImageView iv;
	static String TAG = "MainActivity";
	String path;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btn = (Button) findViewById(R.id.button);
		iv = (ImageView) findViewById(R.id.iv);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO 自动生成的方法存根
				Bitmap bitmap;
				//File file = new File(getApplicationContext().getFilesDir(),
					//	"/see.mp4");
				try {
					path = Environment.getExternalStorageDirectory()
							.getCanonicalFile() + "/see.mp4";
					Log.e(TAG, path);
				} catch (IOException e1) {
					// TODO 自动生成的 catch 块
					e1.printStackTrace();
				}

				MediaMetadataRetriever mmr = new MediaMetadataRetriever();
				// System.out.println(Uri.fromFile(file).toString());
				mmr.setDataSource(path);
				bitmap = mmr.getFrameAtTime(1 * 1000 * 1000);
				iv.setImageBitmap(bitmap);
				System.out.println(mmr
						.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE)
						+ "");
				System.out.println(mmr
						.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE)
						+ "");
				mmr.release();

			}
		});

	}
}

布局文件 很简单

<RelativeLayout
    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"
    >  

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="获取视频的帧图片"
        android:layout_centerInParent="true"
    />  

    <ImageView
        android:id="@+id/iv"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/button"
        >
</ImageView>

</RelativeLayout>  

前期遇到的一个问题是读取不到 这个路径下的文件。于是乎 改为用uri读取,发现也是存在这问题。

后来终于发现,在权限上 少了一些东西。

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

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-13 17:41:41

关于安卓截取缩略图的方法和遇到的问题的相关文章

上传视频时自动完成截取缩略图(二)

从上篇文章中我们知道了ffmpeg是怎么使用的.那么这篇文章给大家介绍下我是怎么通过调用ffmpeg实现在视频上传的同时自动截取图片的. 首先我们不能直接调用ffmpeg实现想要的功能是防止cmd命令执行时出现的黑窗口.所以我们可以封装一个类,然后调用里面的方法只需传递参数就可以实现功能了. 这里我写了一个VideoConverToImg类: public class VideoConverToImg { /// <summary> /// 从视频中截取img格式图片 /// </sum

dede5.7栏目页加入缩略图的方法,绝对可用!

在  后台>>系统>>SQL命令行工具 执行SQL: alter table `dede_arctype` add `typeimg` char(100) NOT NULL default ''; 涉及到文件:        dede/catalog_add.php        dede/catalog_edit.php        dede/templets/catalog_add.htm        dede/templets/catalog_edit.htm 打开ded

shell截取字符串的方法

参考文献: linux中shell截取字符串方法总结 [Linux]如何在Shell脚本中计算字符串长度? 截取字符串的方法一共有八种,主要为以下方法 shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ${parameter:+word} 上面4种可以用来进行缺省值的替换. ${#parameter} 上面这种可以获得字符串的长度. ${para

.net又一个生成缩略图的方法,不变形

生成缩略图是一个十分常用功能,找到了一个方法,重写部分代码,实用又好用,.net又一个生成缩略图的方法,不变形 1 /// <summary> 2 /// 为图片生成缩略图 by 何问起 3 /// </summary> 4 /// <param name="phyPath">原图片的路径</param> 5 /// <param name="width">缩略图宽</param> 6 ///

shell中截取字符串的方法总结

shell中截取字符串的方法有很多种, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ${parameter:+word} 上面4种可以用来进行缺省值的替换. ${#parameter} 上面这种可以获得字符串的长度. ${parameter%word} 最小限度从后面截取word ${parameter%%word} 最大限度从后面截取word ${parameter#word}

.net又一个生成缩略图的方法,不变形,非常好用

生成缩略图是一个十分常用功能,找到了一个方法,重写部分代码,实用又好用,.net又一个生成缩略图的方法,不变形 1 /// <summary> 2 /// 为图片生成缩略图 by 何问起 3 /// </summary> 4 /// <param name="phyPath">原图片的路径</param> 5 /// <param name="width">缩略图宽</param> 6 ///

C#生成缩略图不失真的方法

最近一个手持机项目有个需求,因为物料图片的大小不一,有的很大显示到手持机上会只显示图片的一部分,界面显得非常乱,很影响客户的体验度.所以需要一个方法,将上传到服务器上的图片进行处理,按照一定的大小格式进行保存. 下面提供了两种获取图片缩略图的方法,供大家参考. 方法一:通过调用Image对象的自带方法GetThumbnailImage()进行图片转换 /// <summary> /// 生成缩略图重载方法,返回缩略图的Image对象 /// </summary> /// <p

c#中字符串截取使用的方法

AndyZhang welcome to java world c#中字符串截取使用的方法 String substring(int beginIndex) String substring(int beginIndex, int endIndex) String.Substring (Int32)         子字符串从指定的字符位置开始. String.Substring (Int32, Int32) 子字符串从指定的字符位置开始且具有指定的长度.举例如下:             st

Dedecms(织梦)文章内容页和图片集内容页,调用缩略图的方法

Dedecms(织梦)文章内容页和图片集内容页,调用缩略图的方法,亲测可用! Dedecms(织梦)首页的图片调用,相信大家已经非常的清楚,但是今天我在进行内容页的编写的时候,发现了内容页图片的调用问题! 这种问题,一般出现在产品站内页,因为会有产品缩略图的图片展示,所以今天我专门搜集了这方便的帖子! 为大家来解决这个问题,我想一定能帮助到大家! 好了话不多说,写内容先! 文章内容页和图片集内容页,缩略图的调用.适合内页中调用. <img src="{dede:field.picname