<1>简介

之前往往是通过Bitmap、Drawable和Canvas配合完成,需要写一系列繁杂的逻辑去缩小原有图片,从而得到缩略图。

现在我给大家介绍一种比较简单的方法:(网上有)

在Android 2.2版本中,新增了一个ThumbnailUtils工具类来是实现缩略图,此工具类的功能是强大的,使用是简单,它提供了一个常量和三个方法。利用这些常数和方法,可以轻松快捷的实现图片和视频的缩略图功能。

<2>ThumbnailUtils工具类

常量:

OPTIONS_RECYCLE_INPUT

从此常量用于表示应该回收extractThumbnail(Bitmap, int, int, int)输入源图片(第一个参数),除非输出图片就是输入图片。

方法:

    Bitmap createVideoThumbnail(String filePath, int kind)

    创建一张视频的缩略图。如果视频已损坏或者格式不支持可能返回null。

参数:

filePath: 视频文件路径

                     kind:  文件种类,可以是 MINI_KIND 或 MICRO_KIND

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

    创建所需尺寸居中缩放的位图。

    参数:

          source: 需要被创造缩略图的源位图对象

          width: 生成目标的宽度

         height: 生成目标的高度

         options:在缩略图抽取时提供的选项

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

    创建所需尺寸居中缩放的位图。

    参数:

        source: 需要被创造缩略图的源位图对象

        width: 生成目标的宽度

        height: 生成目标的高度

<3>具体实现:

[java] view plaincopy
  1. package xiaosi.thumbnail;
  2. import android.app.Activity;
  3. import android.graphics.Bitmap;
  4. import android.graphics.BitmapFactory;
  5. import android.graphics.drawable.BitmapDrawable;
  6. import android.graphics.drawable.Drawable;
  7. import android.media.ThumbnailUtils;
  8. import android.os.Bundle;
  9. import android.widget.ImageView;
  10. public class ThumbnailActivity extends Activity {
  11. private Bitmap bitmap = null;
  12. private ImageView image;
  13. @Override
  14. public void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.main);
  17. image = (ImageView) findViewById(R.id.image);
  18. //得到原图片
  19. bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.v);
  20. //得到缩略图
  21. bitmap = ThumbnailUtils.extractThumbnail(bitmap, 100, 100);
  22. image.setImageBitmap(bitmap);
  23. }
  24. }

main.xml

[java] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:orientation="vertical"
  5. android:background="#999999"
  6. android:layout_width="fill_parent"
  7. android:layout_height="fill_parent">
  8. <ImageView
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:src="@drawable/v"
  12. android:layout_marginLeft="10dip"/>
  13. <TextView
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:text="缩略图:"
  17. android:textColor="#000000"/>
  18. <ImageView android:id="@+id/image"
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:layout_marginLeft="10dip"/>
  22. </LinearLayout>

转载于:https://www.cnblogs.com/Free-Thinker/p/6722164.html

Android学习笔记进阶20之得到图片的缩略图相关推荐

  1. android给图片加边框,Android学习笔记进阶19之给图片加边框

    //设置颜色 public void setColour(int color){ co = color; } //设置边框宽度 public void setBorderWidth(int width ...

  2. Android学习笔记进阶十一图片动画播放(AnimationDrawable)

    大家平时见到的最多的可能就是Frame动画了,Android中当然也少不了它.它的使用更加简单,只需要创建一个 AnimationDrawabledF对象来表示Frame动画,然后通过addFrame ...

  3. Android学习笔记19:ImageView实现图片适屏与裁剪

    在Android中,要将一张图片显示在屏幕上,需要创建一个显示图片的对象,该对象就是ImageView. 1.ImageView常用属性 要对图片进行适屏裁剪操作,首先需要了解ImageView的常用 ...

  4. Android学习笔记进阶十三获得本地全部照片

    这是Intent的一个用法. 在ActivityAction里面有一个"ACTION_GET_CONTENT"字符串常量,该常量让用户选择特定类型的数据. intent.setTy ...

  5. Android学习笔记进阶九之Matrix对称变换

    网上很多的倒影特效实际上就是一个对称变换,在改变透明度即可. Matrix对称变换包括很多种,有关于Y轴对称,关于X轴对称,关于y= -x对称等等. 1 关于Y轴对称 [java] view plai ...

  6. Android学习笔记进阶十之Matrix错切变换

    刚开始我也不懂啥叫错切变换,一看效果图你就恍然大悟. 对图像的错切变换做个总结: x = x0 + b*y0; y = d*x0 + y0; 与之对应的方法是: [java] view plainco ...

  7. android jackson xml,[Android学习笔记]jackson库的使用

    Jackson库一般用于序列化和反序列化操作,通常会涉及到的操作是: 1. Java Object -> Json String 2. Java Object -> Xml String ...

  8. Android学习笔记26:图片切换控件ImageSwitcher的使用

    在Windows操作系统中,要查看多张图片,可以通过使用"Windows照片查看器"在"上一张"和"下一张"之间切换,进行多张图片的浏览. ...

  9. Android学习笔记之在图片特效

    1.涂鸦(能清屏) HandWritingActivity.java [java] view plaincopy package xiaosi.handWriting; import android. ...

最新文章

  1. g++ linux 编译开栈_使用 linux kernel +busybox 定制linux系统
  2. EF-CodeFirst-域模型配置
  3. 如何停止java线程
  4. easyui 1.4.2 Tab刷新图标重复问题
  5. css中 media的用法,如何在css中正确使用@media
  6. k8s部署zkui 2.0
  7. [Python学习] 专题一.函数的基础知识
  8. 时光机穿梭---工作区和暂存区
  9. linux 用户空间通过makefile向程序传递参数
  10. 在html中标题字号一共有几种,HTML中常用的几种标签
  11. 3. 从零开始学CSRF
  12. Node.js 初步学习总结
  13. C语言 三角函数 时钟周期,三角函数的周期公式
  14. HTML 小型进销库存界面模板
  15. Android通过第三方软件打开Word、Excel、PPT、PDF等文档
  16. 再次推荐下这本书 —— DDIA
  17. 敏捷实践 | 分不清Kanban和看板的人只剩你了
  18. Arduino基础入门篇26—步进电机
  19. cocos2d中遇到棱形组成的方块进行点击判断位置
  20. 解决前端vue中的Uncaught TypeError: this.Form is undefined

热门文章

  1. 计算机绘图员 机械 实训二,计算机绘图员[机械]实训形考.doc
  2. 怎么让网页中的文字两边留出空白_横线、方格、点阵、空白本,谁才是笔记本中的C位?...
  3. linux里的网卡自动连接,【Raspberry Pi】USB无线网卡自动连接
  4. numpy找到最大值坐标_学习OpenCV convexhull并用numpy实现
  5. 共享的网络如何让自己比别人快_ipfs网络的分布式数据是如何做到数据共享的?...
  6. php 数据库 自增值,Mysql应用MySql数据库自动递增值问题
  7. html拖拽吸附插件,前端拖拽插件gridster.js
  8. 关于容量设计、规划、治理 你知多少?
  9. Octave入门基础
  10. numpy randn 和_人生苦短,自学python——numpy模块