`
407827531
  • 浏览: 1076486 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

获取大图的缩略图

 
阅读更多

 

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

Android应用开发中我们会经常用到图片处理的技术,今天给大家分享些获取固定宽度图片的技巧

 

移动开发中,内存资源很宝贵,而且对加载图片内存空间也有限制;所以我们会在加载图片对图片进行相应的处理,有时为了提高响应速度,增强用户体验,我们在加载大图片时会先加载图片的缩略图、如后加载原图,所以我们要将图片按照固定大小取缩略图,一般取缩略图的方法是使用BitmapFactory的decodeFile方法,然后通过传递进去 BitmapFactory.Option类型的参数进行取缩略图,在Option中,属性值inSampleSize表示缩略图大小为原始图片大小的几分之一,即如果这个值为2,则取出的缩略图的宽和高都是原始图片的1/2,图片大小就为原始大小的1/4。

然而,如果我们想取固定大小的缩略图就比较困难了,比如,我们想将不同大小的图片去出来的缩略图高度都为200px,而且要保证图片不失真,那怎么办?我们总不能将原始图片加载到内存中再进行缩放处理吧,要知道在移动开发中,内存是相当宝贵的,而且一张100K的图片,加载完所占用的内存何止 100K?经过研究,发现,Options中有个属性inJustDecodeBounds,研究了一下,终于明白是什么意思了,SDK中的E文是这么说的If set to true, the decoder will return null (no bitmap), but the out... fields will still be set, allowing the caller to query the bitmap without having to allocate the memory for its pixels.意思就是说如果该值设为true那么将不返回实际的bitmap不给其分配内存空间而里面只包括一些解码边界信息即图片大小信息,那么相应的方法也就出来了,通过设置inJustDecodeBounds为true,获取到outHeight(图片原始高度)和 outWidth(图片的原始宽度),然后计算一个inSampleSize(缩放值),然后就可以取图片了,这里要注意的是,inSampleSize 可能小于0,必须做判断。具体代码如下:

 

FrameLayout fr=(FrameLayout)findViewById(R.id.FrameLayout01);        
BitmapFactory.Options options = new BitmapFactory.Options();        
options.inJustDecodeBounds = true;        // 获取这个图片的宽和高        
Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/test.jpg", options); //此时返回bm为空        
options.inJustDecodeBounds = false;         //计算缩放比       
 int be = (int)(options.outHeight / (float)200);       
 if (be <= 0)            
be = 1;        
options.inSampleSize = be;       
//重新读入图片,注意这次要把options.inJustDecodeBounds 设为 false哦    
 bitmap=BitmapFactory.decodeFile("/sdcard/test.jpg",options);       
 int w = bitmap.getWidth();       
 int h = bitmap.getHeight();       
 System.out.println(w+"   "+h);        
ImageView iv=new ImageView(this);     
 iv.setImageBitmap(bitmap);
//这样我们就可以读取较大的图片就会避免内存溢出了。如果你想把压缩后的图片保存在Sdcard上的话就
//很简单了:
File file=new File("/sdcard/feng.png");      
  try {            FileOutputStream out=new FileOutputStream(file);           
 if(bitmap.compress(Bitmap.CompressFormat.PNG, 100, out)){               
 out.flush();               
 out.close();           
 }        
} catch (FileNotFoundException e) {            
e.printStackTrace();        
} catch (IOException e) {            
e.printStackTrace();       
 }

 

 

ok,这样就把图片保存在/sdcard/feng.png这个文件里面了,呵呵。

分享到:
评论

相关推荐

    ANDROID 获取最近的相片的缩略图

    在Android开发中,获取最近照片的缩略图是一项常见的任务,尤其在构建涉及用户媒体库的应用时。然而,实现这个功能并不总是那么简单,可能会遇到一些问题,如获取不到缩略图或者获取到的缩略图顺序与实际照片的拍摄...

    通过视频地址获取视频缩略图

    在IT行业中,获取视频缩略图是一项常见的任务,特别是在视频分享、播放器开发或网站设计等领域。本教程将深入探讨如何仅通过视频地址来获取视频的缩略图,这是一个高效且实用的技术。以下是对这个主题的详细阐述: ...

    JAVA获取视频缩略图

    在Java编程环境中,获取视频缩略图是一项常见的需求,尤其在多媒体应用或者视频分享平台中。这个过程涉及到多媒体处理和图像操作的知识。本文将详细解释如何在Java中实现这一功能,以及相关的技术点。 首先,Java...

    获取Windows文件的缩略图

    在Windows操作系统中,获取文件的缩略图是常见的需求,特别是在开发图形用户界面(GUI)应用时,如文件管理器或图像查看器。Windows Shell编程提供了接口和类库来实现这一功能,主要涉及到Windows API(应用程序接口...

    java利用ffmpeg获取视频缩略图

    在IT行业中,尤其是在多媒体处理领域,获取视频的缩略图是一项常见的需求。Java作为一种广泛使用的编程语言,可以借助外部库来实现这样的功能,比如通过ffmpeg工具。本项目就是关于如何在Java环境中使用ffmpeg来获取...

    缩略图点击展开大图

    3. **大图处理**:在处理函数中,获取用户点击的缩略图对应的全尺寸图片URL。这可以通过在HTML元素中存储大图URL,或者通过某种约定(如URL模式)从缩略图URL推断出来。 4. **显示大图**:有多种方式显示大图,例如...

    安卓获取视频文件的缩略图

    在Android平台上,获取视频文件的缩略图是开发者经常遇到的需求。这主要涉及到多媒体处理,尤其是视频帧的提取。在本教程中,我们将探讨如何在Android应用中实现这一功能,同时利用JieCao(杰操)播放器库来辅助完成...

    扫描本地视频并获取缩略图Demo

    5. **缩略图大小调整**:有时,原始帧可能过大,需要进行缩放以适应界面需求。在Android中,可以使用`Bitmap.createScaledBitmap()`方法;在iOS中,可以利用`UIImage`的`resized(to:)`方法。 6. **异步处理**:考虑...

    Android应用源码实现获取视频的缩略图(ThumbnailUtils),并且播放.zip

    - 缩略图的生成可能消耗时间,尤其是对于大文件。因此,可以考虑在后台线程执行,或者提前生成并缓存。 - 使用`ThumbnailUtils`获取的缩略图可能需要进一步调整大小以适应UI布局,可以使用`Bitmap....

    易语言简单缩略图

    易语言简单缩略图源码,简单缩略图,开启图片组扩展功能,关闭图片组扩展功能,取图像缩略图,A2W,GdiplusStartup,GdiplusShutdown,GdipLoadImageFromFile,GdipDisposeImage,MultiByteToWideChar,GdipGetImageThumbnail,...

    jQuery点击缩略图右侧滑出大图特效

    在网页设计中,jQuery是一种广泛使用的JavaScript库,它极大...这段代码会监听缩略图的点击事件,获取被点击的缩略图的href属性(即大图的URL),然后将大图加载到大图容器中,并通过CSS动画展示出来: ```javascript ...

    安卓获取视频缩略图

    在安卓平台上,获取视频缩略图是开发过程中常见的需求,特别是在设计媒体库或者视频播放应用时。本篇文章将深入探讨如何在Android系统中获取本地视频的缩略图,并且展示如何利用列表视图(ListView)或者网格视图...

    获取缩略图,利用shell32

    在IT领域,尤其是在Windows应用程序开发中,获取文件的缩略图是一项常见的需求。这个程序是基于Visual Studio 2005(VS2005)用C++语言编写的,并且利用了MFC(Microsoft Foundation Classes)库来实现这一功能。MFC...

    PHP大图片生成缩略图

    - 图片预览:在不下载完整大图的情况下,提供快速预览。 - 图片搜索:搜索引擎抓取网页图片,生成缩略图以节省存储空间。 以上就是使用PHP生成大图片缩略图的方法和一些优化技巧。通过GD库或Imagick扩展,我们...

    利用shell获取缩略图的类

    这里我们关注的是如何利用shell命令来获取缩略图,并且这个过程已经封装在了一个C++类中,即`Thumb`类。`VS2005`(Visual Studio 2005)是开发环境,它支持C++编程。`C++`是一种通用的、面向对象的编程语言,具有...

    动态缩略图实现方案

    动态缩略图是一种在网页或应用中常见的技术,它允许用户根据需要查看不同尺寸的图片,通常是缩小版的原图,以节省加载时间并优化用户体验。在Java中实现动态缩略图涉及到图像处理和流媒体技术。下面我们将深入探讨这...

    浏览图像缩略图

    由于图像文件通常较大,处理缩略图时需要考虑性能优化: 1. **缓存**:生成的缩略图可以缓存起来,避免重复计算,提高显示速度。 2. **异步处理**:在后台线程生成缩略图,防止阻塞用户界面。 3. **按需加载**:仅...

    jQuery点击缩略图控制大图切换代码

    本篇文章将深入探讨如何使用jQuery实现一个点击缩略图控制大图切换的功能,这是许多网站展示图片集的一个常见需求。 首先,我们需要理解jQuery的基本用法。jQuery是一个轻量级的JavaScript库,它简化了DOM操作、...

    WPF MVVM实现图片缩略图浏览器

    在本文中,我们将深入探讨如何使用WPF(Windows Presentation Foundation)和MVVM(Model-View-ViewModel)设计模式实现一个高效的图片缩略图浏览器。这个应用程序的特点是能够降低内存消耗,实现异步加载图片,以及...

    js实现缩略图自动滚动并显示对应大图

    - **显示大图**:当缩略图被选中(点击或自动滚动到)时,获取其`data-big-src`属性值,即对应的大图URL,然后更新大图容器内的图片源。 以下是一个简单的JavaScript实现示例: ```javascript var thumbnailList ...

Global site tag (gtag.js) - Google Analytics