Android开发之大位图二次採样压缩处理(源码分享)
图片有各种形状和大小。在很多情况下这些图片是远远大于我们的用户界面(UI)且占领着极大的内存空间,假设我们不正确位图进行压缩处理,我们的程序会发生内存泄露的错误。
MainActivity的代码
package com.example.g08_bitmap;import android.os.Bundle;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.ImageView;public class MainActivity extends Activity {private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = (ImageView) this.findViewById(R.id.imageView1);imageView.setImageBitmap(decodeSampledBitmapFromResource(getResources(), R.drawable.a, 300, 300));}public static Bitmap decodeSampledBitmapFromResource(Resources res,int resId, int reqWidth, int reqHeight) {final BitmapFactory.Options options = new BitmapFactory.Options();//先将inJustDecodeBounds属性设置为true,解码避免内存分配options.inJustDecodeBounds = true;// 将图片传入选择器中BitmapFactory.decodeResource(res, resId, options);// 对图片进行指定比例的压缩options.inSampleSize = calculateInSampleSize(options, reqWidth,reqHeight);//待图片处理完毕后再进行内存的分配,避免内存泄露的发生options.inJustDecodeBounds = false;return BitmapFactory.decodeResource(res, resId, options);}// 计算图片的压缩比例public static int calculateInSampleSize(BitmapFactory.Options options,int reqWidth, int reqHeight) {// Raw height and width of imagefinal int height = options.outHeight;final int width = options.outWidth;int inSampleSize = 1;if (height > reqHeight || width > reqWidth) {final int heightRatio = Math.round((float) height/ (float) reqHeight);final int widthRatio = Math.round((float) width / (float) reqWidth);// 选择长宽高较小的比例,成为压缩比例inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;}return inSampleSize;}}
Android开发之大位图二次採样压缩处理(源码分享)相关推荐
- Android开发之大位图二次采样压缩处理(源代码分享)
图片有各种形状和大小.在许多情况下这些图片是远远大于我们的用户界面(UI)且占据着极大的内存空间,如果我们不对位图进行压缩处理,我们的程序会发生内存泄露的错误. MainActivity的代码 pac ...
- 二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面
介绍: PHP二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面 网盘下载地址: http://kekewl.net/RROyxgOkauW0 图片:
- Android开发视频教学第一季(1-16集)视频源码下载
[Android开发视频教学].01_01_Android平台一日 http://android.itmdc.com/forum.php?mod=viewthread&tid=45 [Andr ...
- Android开发视频教学第一季(17-34集)视频源码下载
[Android开发视频教学].01_17_调试程序 http://www.apkbus.com/android-95481-1-1.html [Android开发视频教学]01_18_文件下载 h ...
- android 网络编程实现,Android开发使用HttpURLConnection进行网络编程详解【附源码下载】...
本文实例讲述了Android开发使用HttpURLConnection进行网络编程.分享给大家供大家参考,具体如下: --HttpURLConnection URLConnection已经可以非常方便 ...
- Android开发之高斯模糊效果三行代码搞定附带CSDN源码请导入module
老套路: 我们先来看下效果图: 效果怎么样,不错吧? 我们只需要用到两个库就可以轻松实现: Glide和glide-transformations这两个库 我们直接上代码: package phone ...
- Android开发之跨进程通讯-AIDL实现方法 (附源码)
先看效果图,下面是广播和AIDL跨进程的方法 我们先创建AIDL文件定义接口方法 定义好接口方法如下图: // ITokenAidlInterface.aidl package com.example ...
- Android开发之使用TabLayout快速实现选项卡切换功能(附源码下载)
看下效果图: 先看下布局: TabLayout的简单使用: 当选项卡过少时候设置填充全屏app:tabGravity="fill"设置下面切换选项卡的小滑片颜色app:tabInd ...
- Android开发之大位图压缩水印处理
我们在发微博或者csdn博文的时候都可以给图片加上一个水印,一个独立的标识,那是怎么实现的呢?先封装一个BitmapTools封装类,该类要解决的问题是一将突破存储至sdcard中,二给图片加上水印. ...
最新文章
- poj 1737男人八题之一 orz ltc
- Windows文件目录DOS窗口
- [攻防世界 pwn]——level0
- 如何在Access中参数化日期类型,以解决Data type mismatch in criteria expression的问题...
- python 单行读取文件_python – 在使用for循环读取文件时跳过一行
- PAT乙:1009 说反话
- 深入理解 Docker 架构 | 图文
- c语言 指针函数pdf,C语言指针经验总结(经典).pdf
- 引用的本质是const指针
- OpenGL 头文件,库文件
- 约瑟夫问题、约瑟夫环
- 计算机主板知识,电脑主板知识:主板板型、接口、做工与选购详解
- Vacuum tube 真空管/电子管
- 为什么苹果手机通话的时候不能录音?
- API获取微信小程序二维码
- 联邦学习安全防御之差分隐私
- 非严格次小生成树+严格次小生成树
- Linux系统怎么复制文件夹下的全部文件到另外文件夹?
- c语言 unique函数,C++ unique(STL unique)算法详解
- weblogic修改控制台密码