在开发图片浏览器等软件是,很多时候要显示图片的缩略图,而一般情况下,我们要将图片按照固定大小取缩略图,一般取缩略图的方法是使用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,必须做判断。
具体代码如下:
这样我们就可以读取较大的图片而不会内存溢出了。如果你想把压缩后的图片保存在Sdcard上的话就很简单了:
ok,这样就把图片保存在/sdcard/feng.png这个文件里面了,呵呵。
但是这里的缩放保存是按长宽比例的,下边也可以按固定大小缩放哦:
本文转自
http://chaowen0668.iteye.com/blog/1059400
分享到:
相关推荐
demo为仿微信朋友圈发动态的功能,实现从相机拍照和相册(相册为自己实现且支持同时选取多张图片)选取图片显示和删除并保存到本地SD卡操作(保存到本地的是高清的压缩图片小于100KB 分辨率1280*720 可以直接上传到...
通过EditText的内容获取网络上的图片 压缩后显示在界面上 可以保存至SD卡 可以根据路径获取SD卡中的图片 可以将分辨率较大的图片等比例压缩至适用型分辨率
轻量级的android原生图片选择拍照第三方库 很容易使用,并且支持图片压缩多图片选择
文件提供android端和web端。。。android端提供两种上传方式,web端提供两种接收方式,一种为aspx文件和web服务方式(asmx),android:xUtils三方工具,和自带的上传方式。。。xUtils方式解决了某些手机在上传照片...
主要介绍了Android实现简单图片压缩的方法,详细分析了Android针对图片的读取、缩放及保存等操作技巧,需要的朋友可以参考下
android下读取framebuffer的内容 程序运行就会把framebuffer的内容保存在/sdcard/123.raw下面, 要想打开还需要在文件上插入如bitmap的文件头即可
搜集网上资源做的,对手机保存原来的图片保存后,对原图压缩并保存。并删除原图。在图片上传完成后,对压缩的图片进行删除。减少SD卡的内存空间。
调用系统的相机,然后把图片保存,然后把图片读取进来,在进行压缩,然后在保存,可以看到图片的压缩以后200多k
在代码中关键部分都有详细的注释1使用两张图片合成水印;2将文字直接绘制到图片上;3获取手机或sd卡上的图片压缩并显示;4可将图片保存到sd卡上;5将图片进行Base64转换;6将Base64转换为图片。.zip
概述图片过滤模块(内含iOS和android)APICloud 的 imageFilter 模块是一个图片滤镜。本模块有图片过滤、图片压缩及获取图片信息的功能。模块接口文档来自于:APICloud 官方概述imageFilter模块封装了对图片按照指定...
首先创建一个文件,用于保存拍照图像,然后根据不同系统版本获取Uri,传递给Intent,然后调起相机(可以考虑将outputImage、imageUri设置为全局变量)。 3、处理回调 使用BitmapFactory读取imageUri,得到bitmap,...
1、使用两张图片合成水印;2、将文字直接绘制到图片上;3、获取手机或sd卡上的图片,压缩并显示;4、可将图片保存到sd卡上;5、将图片进行Base64转换;6、将Base64转换为图片。 在代码中关键部分都有详细的注释...
在android下实现用v4l2获取一帧yuv数据,移植libjpeg库后,实现压缩保存。
),自定义裁剪框后保存前后两张图片,保存裁剪后的图片是可以选择压缩和修改精度的调整。This is a project of image-cutting in Android, which provides three kinds of picture sources(1.camera shot. 2....
(6) 图片缓存模块:imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。 (7) 配置器模块:可以对简易的实现配对配置的操作,目前配置文件可以支持Preference...
实现如下功能: 在Android系统上采集摄像头图像,然后将图像压缩成H264,支持两种方式压缩:1. FFmpeg软编方式;2.调用MediaCodec硬件编码。压缩输出的流保存成文件。我博客上有一篇相关的文章:...
非常重要,如果不设置这个参数那么我们获取到的图片只是一个经过压缩后的缩略图,只有设置这个才能得到拍摄后的原图。 2、在startActivityForResult(intent, 0);后我们需要重写onActivityResult(int requestCode, ...
在保存时,有几个(最流行的)压缩模块和一些可以写入文件的附加字段,如作者或版权。 最低 Android API 级别 8 支持的架构:所有 安装 只需添加到您的 gradle 依赖项: compile '...
getAndroidID : 获取设备 AndroidID getMacAddress : 获取设备 MAC 地址 getManufacturer : 获取设备厂商 getModel : 获取设备型号 shutdown : 关机 reboot : 重启 reboot2Recovery : 重启到 recovery reboot2...