android取图片视频的缩略图
来源:互联网 发布:python股票自动交易 编辑:程序博客网 时间:2024/05/20 11:24
对于取缩略图这种操作,虽然说起来挺迅速的,但还是需要时间的,这时候,最好是把取缩略图的功能代码放置在单独的线程中去执行实现。
对于图片的话,缩略图直接打开解析出图片内容,直接进行缩放就可以了。
Bitmap thumb = BitmapFactory.decodeFile(mediapath);Bitmap bitmap=ThumbnailUtils.extractThumbnail(thumb, 300, 300);
对于视频的话,首先,取视频缩略图是需要点时间的。所以要做好等待这种交互。实现方法如下:
Bitmap bitmap = null;bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, Thumbnails.MINI_KIND);bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
完整代码如下:
package com.sobey.camera;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import com.sobey.camera.MediaItem.MediaType;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.media.ThumbnailUtils;import android.os.Environment;import android.provider.MediaStore.Video.Thumbnails;import android.util.Log;public class GetIconTask implements Runnable{private String mediaName;private String mediaPath;private MediaItem.MediaType mediaType;private static final String TAG="ICON TASK";public GetIconTask(String name,String sourceMedia,MediaItem.MediaType type) {this.mediaPath = sourceMedia;this.mediaType=type;this.mediaName=name;} @Overridepublic void run() {// TODO Auto-generated method stubif(this.mediaType==MediaType.MOVIE)getVideoThumbnail(mediaName,mediaPath,300,300);else if(this.mediaType==MediaType.PHOTO)getImageThumbnail(mediaName,mediaPath,300,300);}//public Bitmap getImageThumbnail(String filename,Bitmap bmp,int width,int height) public Bitmap getImageThumbnail(String mediaName,String mediapath,int width,int height) {Bitmap thumb = BitmapFactory.decodeFile(mediapath);Bitmap bitmap=ThumbnailUtils.extractThumbnail(thumb, 300, 300); saveBitmap(bitmap,mediaName);return bitmap; }private Bitmap getVideoThumbnail(String name,String videoPath, int width , int height){Bitmap bitmap = null;bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, Thumbnails.MINI_KIND);bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);saveBitmap(bitmap,CameraFrame.mMedialist.get(CameraFrame.mMedialist.size()-1).getItemname());return bitmap;}private void saveBitmap(Bitmap bm,String picName) {Log.e(TAG, "保存图片");String icon_dir=CameraFrame.mMedialist.get(CameraFrame.mMedialist.size()-1).getItempath().replace("/", "__");// String icon_dir=picName.replace("/", "__");File dir = new File(Environment.getExternalStorageDirectory().toString()+"/movdo/clip",icon_dir );if(!dir.exists())if(!dir.mkdir())Log.e(TAG, "don't create dir");elseLog.i(TAG, "DIR is created");picName=picName.replace(".mp4", ".png");File f = new File(dir.getAbsolutePath(), "0.png");if (f.exists()) {f.delete();}try {FileOutputStream out = new FileOutputStream(f);bm.compress(Bitmap.CompressFormat.PNG, 90, out);out.flush();out.close();Log.i(TAG, "已经保存");//MediaItem mediaitem= new MediaItem(f.getAbsolutePath(),Environment.getExternalStoragePublicDirectory(//Environment.DIRECTORY_DCIM).getPath().toString()+File.separator+f.getAbsolutePath(),Environment.getExternalStoragePublicDirectory(//Environment.DIRECTORY_DCIM).getPath().toString()+File.separator+f.getAbsolutePath(),MediaType.MOVIE);//CameraFrame.mediaCount++;//CameraFrame.mMedialist.add(mediaitem);//CameraFrame.mMediaCount.setText(String.valueOf(CameraFrame.mMedialist.size()));} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
0 0
- android取图片视频的缩略图
- android获取图片和视频的缩略图
- android 获取视频和图片的缩略图
- android获取图片和视频的缩略图
- Android视频图片缩略图的获取
- android 获取视频,图片缩略图
- android图片视频缩略图显示
- android 获取视频,图片缩略图
- android 图片操作之获取图片或视频的缩略图
- 获取Android手机的图片和视频的缩略图
- android 获取视频和图片的缩略图的方法
- 获取Android手机上的图片和视频缩略图
- 获取Android手机上的图片和视频缩略图
- 获取Android手机上的图片和视频缩略图
- android获取手机上的图片和视频缩略图thumbnails
- Android系统详解之获取图片和视频的缩略图
- Android系统详解之获取图片和视频的缩略图
- Android系统详解之获取图片和视频的缩略图
- Android Studio selector 报 Element selector must be declared 的问题
- Linux平台下文件统计
- 1002-切面条
- 【CSS-02】em和span的区别
- springMVC中发送邮件
- android取图片视频的缩略图
- listview优化为什么要static class ViewHolder
- opencv mat元素的遍历
- Java ConcurrentModificationException异常原因和解决方法
- CocoaLumberjack 学习总结(一)
- PAT-Shopping in Mars (25)
- 236. Lowest Common Ancestor of a Binary Tree
- GDCPC #2 F - Palindrome
- online_judge_1513