Android如何获取图片或视频略缩图

根据指定的图像路径和大小来获取缩略图 此方法有两点好处:

1.使用较小的内存空间,第一次获取的bitmap实际上为null,只是为了读取宽度和高度,第二次读取的bitmap是根据比例压缩过的图像,第三次读取的bitmap是所要的缩略图。

2. 缩略图对于原图像来讲没有拉伸,这里使用了2.2版本的新工具ThumbnailUtils,使 用这个工具生成的图像不会被拉伸。

/**

  * @param imagePath
  *   图像的路径
  * @param width
  *   指定输出图像的宽度
  * @param height
  *   指定输出图像的高度
  * @return 生成的缩略图
  */
 public static Bitmap getImageThumbnail(String imagePath, int width, int height)
 {
 Bitmap bitmap = null;
 BitmapFactory.Options options = new BitmapFactory.Options();
 options.inJustDecodeBounds = true;
 // 获取这个图片的宽和高,注意此处的bitmap为null
 bitmap = BitmapFactory.decodeFile(imagePath, options);
 options.inJustDecodeBounds = false; // 设为 false
 // 计算缩放比
 int h = options.outHeight;
 int w = options.outWidth;
 int beWidth = w / width;
 int beHeight = h / height;
 int be = 1;
 if (beWidth < beHeight)
 {
  be = beWidth;
 }
 else
 {
  be = beHeight;
 }
 if (be <= 0)
 {
  be = 1;
 }
 options.inSampleSize = be;
 // 重新读入图片,读取缩放后的bitmap,注意这次要把options.inJustDecodeBounds 设为 false
 bitmap = BitmapFactory.decodeFile(imagePath, options);
 // 利用ThumbnailUtils来创建缩略图,这里要指定要缩放哪个Bitmap对象
 bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,
  ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
 return bitmap;
 }

 /**
  * 获取视频的缩略图 先通过ThumbnailUtils来创建一个视频的缩略图,然后再利用ThumbnailUtils来生成指定大小的缩略图。
  * 如果想要的缩略图的宽和高都小于MICRO_KIND,则类型要使用MICRO_KIND作为kind的值,这样会节省内存。
  *
  * @param videoPath
  *   视频的路径
  * @param width
  *   指定输出视频缩略图的宽度
  * @param height
  *   指定输出视频缩略图的高度度
  * @param kind
  *   参照MediaStore.Images.Thumbnails类中的常量MINI_KIND和MICRO_KIND。
  *   其中,MINI_KIND: 512 x 384,MICRO_KIND: 96 x 96
  * @return 指定大小的视频缩略图
  */
 public static Bitmap getVideoThumbnail(String videoPath, int width, int height,
  int kind)
 {
 Bitmap bitmap = null;
 // 获取视频的缩略图
 bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, kind);
 System.out.println("w" + bitmap.getWidth());
 System.out.println("h" + bitmap.getHeight());
 bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,
  ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
 return bitmap;
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • android 获取视频,图片缩略图的具体实现

    1.获取视频缩略图有两个方法(1)通过内容提供器来获取(2)人为创建缩略图 (1)缺点就是必须更新媒体库才能看到最新的视频的缩略图 [java] 复制代码 代码如下: /**      * @param context      * @param cr     * @param Videopath     * @return      */     public static Bitmap getVideoThumbnail(Context context, ContentResolver cr

  • Android获取SD卡上图片和视频缩略图的小例子

    如何判断文件呢? 可以通过Cursor遍历数据库,对比INTERNAL_CONTENT_URI字段的值,这是一个Uri,这里保存着Android手机SD卡上的多媒体文件完整路径. [java] 复制代码 代码如下: Uri originalUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;                 //若为视频则为MediaStore.Video.Media.EXTERNAL_CONTENT_URI;          

  • android获取音乐文件的内置专辑图片实现思路及代码

    代码和注释如下: 复制代码 代码如下: private Cursor getCursor(String filePath) { String path = null; Cursor c = getContentResolver().query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); // System.out.printl

  • android图像绘制(六)获取本地图片或拍照图片等图片资源

    从SD卡中获取图片资源,或者拍一张新的图片. 先贴代码 获取图片: 注释:拍照获取的话,可以指定图片的保存地址,在此不说明. 复制代码 代码如下: CharSequence[] items = {"相册", "相机"}; new AlertDialog.Builder(this) .setTitle("选择图片来源") .setItems(items, new OnClickListener() { public void onClick(Dia

  • Android从服务器获取图片的实例方法

    [java] 复制代码 代码如下: public static Bitmap getBitmapFromServer(String imagePath) { HttpGet get = new HttpGet(imagePath);     HttpClient client = new DefaultHttpClient();     Bitmap pic = null;     try {         HttpResponse response = client.execute(get)

  • Android依据名字通过反射获取在drawable中的图片

    MainActivity如下: 复制代码 代码如下: package cn.testreflect; import java.lang.reflect.Field; import android.os.Bundle; import android.widget.ImageView; import android.app.Activity; /** * Demo描述: * 依据图片的名字,通过反射获取其在drawable中的ID * 在根据此ID显示图片 */ public class MainA

  • Android获取SD卡中选中图片的路径(URL)示例

    最近在做一个图片上传的功能,需要提供上传图片在SD卡中的路径,在网上看了些例子,改改调试成功,代码很简单.其布局文件如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill

  • Android 异步获取网络图片并处理导致内存溢出问题解决方法

    测试环境为Adnroid 2.1以上. 1.AndroidManifest.xml 权限配置: 添加互联网访问权限: 复制代码 代码如下: <uses-permission android:name="android.permission.INTERNET" /> 2.异步图片类 ImageDownloadTask 复制代码 代码如下: import java.io.ByteArrayOutputStream; import java.io.IOException; imp

  • android中知道图片name时获取图片的简单方法

    1. 图片放在sdcard中, 复制代码 代码如下: Bitmap imageBitmap = BitmapFactory.decodeFile(path)  (path 是图片的路径,跟目录是/sdcard) 2. 图片在项目的res文件夹下面 复制代码 代码如下: //得到application对象 ApplicationInfo appInfo = getApplicationInfo(); //得到该图片的id(name 是该图片的名字,"drawable" 是该图片存放的目录

  • android照相、相册获取图片剪裁报错的解决方法

    这是调用相机 public static File getImageFromCamer(Context context, File cameraFile, int REQUE_CODE_CAMERA, Intent intent) { intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File fileDir = HelpUtil.getFile(context, "/Tour/user_photos"); cameraFile

随机推荐