图片有各种形状和大小。在很多情况下这些图片是远远大于我们的用户界面(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开发之大位图二次採样压缩处理(源码分享)相关推荐

  1. Android开发之大位图二次采样压缩处理(源代码分享)

    图片有各种形状和大小.在许多情况下这些图片是远远大于我们的用户界面(UI)且占据着极大的内存空间,如果我们不对位图进行压缩处理,我们的程序会发生内存泄露的错误. MainActivity的代码 pac ...

  2. 二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面

    介绍: PHP二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面 网盘下载地址: http://kekewl.net/RROyxgOkauW0 图片:

  3. Android开发视频教学第一季(1-16集)视频源码下载

    [Android开发视频教学].01_01_Android平台一日 http://android.itmdc.com/forum.php?mod=viewthread&tid=45 [Andr ...

  4. Android开发视频教学第一季(17-34集)视频源码下载

    [Android开发视频教学].01_17_调试程序 http://www.apkbus.com/android-95481-1-1.html [Android开发视频教学]01_18_文件下载  h ...

  5. android 网络编程实现,Android开发使用HttpURLConnection进行网络编程详解【附源码下载】...

    本文实例讲述了Android开发使用HttpURLConnection进行网络编程.分享给大家供大家参考,具体如下: --HttpURLConnection URLConnection已经可以非常方便 ...

  6. Android开发之高斯模糊效果三行代码搞定附带CSDN源码请导入module

    老套路: 我们先来看下效果图: 效果怎么样,不错吧? 我们只需要用到两个库就可以轻松实现: Glide和glide-transformations这两个库 我们直接上代码: package phone ...

  7. Android开发之跨进程通讯-AIDL实现方法 (附源码)

    先看效果图,下面是广播和AIDL跨进程的方法 我们先创建AIDL文件定义接口方法 定义好接口方法如下图: // ITokenAidlInterface.aidl package com.example ...

  8. Android开发之使用TabLayout快速实现选项卡切换功能(附源码下载)

    看下效果图: 先看下布局: TabLayout的简单使用: 当选项卡过少时候设置填充全屏app:tabGravity="fill"设置下面切换选项卡的小滑片颜色app:tabInd ...

  9. Android开发之大位图压缩水印处理

    我们在发微博或者csdn博文的时候都可以给图片加上一个水印,一个独立的标识,那是怎么实现的呢?先封装一个BitmapTools封装类,该类要解决的问题是一将突破存储至sdcard中,二给图片加上水印. ...

最新文章

  1. poj 1737男人八题之一 orz ltc
  2. Windows文件目录DOS窗口
  3. [攻防世界 pwn]——level0
  4. 如何在Access中参数化日期类型,以解决Data type mismatch in criteria expression的问题...
  5. python 单行读取文件_python – 在使用for循环读取文件时跳过一行
  6. PAT乙:1009 说反话
  7. 深入理解 Docker 架构 | 图文
  8. c语言 指针函数pdf,C语言指针经验总结(经典).pdf
  9. 引用的本质是const指针
  10. OpenGL 头文件,库文件
  11. 约瑟夫问题、约瑟夫环
  12. 计算机主板知识,电脑主板知识:主板板型、接口、做工与选购详解
  13. Vacuum tube 真空管/电子管
  14. 为什么苹果手机通话的时候不能录音?
  15. API获取微信小程序二维码
  16. 联邦学习安全防御之差分隐私
  17. 非严格次小生成树+严格次小生成树
  18. Linux系统怎么复制文件夹下的全部文件到另外文件夹?
  19. c语言 unique函数,C++ unique(STL unique)算法详解
  20. weblogic修改控制台密码

热门文章

  1. 顺风详解Nginx系列—Ngx中的变量
  2. java多线程之锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁
  3. 2010 年 360 盗取用户密码事件始末
  4. redis学习之——CAP原理CAP+BASE
  5. C# 检测文件是否被其他进程占用
  6. Windows系统内存分析工具的介绍
  7. AMD透露Epyc服务器芯片更多细节 多方面挑战英特尔至强平台
  8. 实验mongodb使用gridfs存放一个大文件
  9. 是男人就下100层【第一层】——高仿微信界面(4)
  10. Jquery 常用方法经典总结