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