先得到位图宽高不用加载位图,然后按ImageView比例缩放,得到缩放的尺寸进行压缩并加载位图.inSampleSize是缩放多少倍,小于1默认是1,通过调节其inSampleSize参数,比如调节为2,宽高会为原来的1/2,内存变回原来的1/4.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/line1"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="300dp" /> </LinearLayout>

布局文件

public class MainActivity extends AppCompatActivity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = findViewById(R.id.image); BitmapFactory.Options factoryOptions = new BitmapFactory.Options();
// 不将图片读取到内存中,仍然可以通过参数获得它的高宽
factoryOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile("/sdcard/AAAImage/image2.png", factoryOptions);
int imageWidth = factoryOptions.outWidth;
int imageHeight = factoryOptions.outHeight; ViewGroup.LayoutParams layoutParams = imageView.getLayoutParams();
int width2 = layoutParams.width;
int height2 = layoutParams.height;
// 等比缩小,previewWidth和height是imageView的宽高
int scaleFactor = Math.max(imageWidth /width2,
imageHeight /height2); // 将图片读取到内存中
factoryOptions.inJustDecodeBounds = false;
// 设置等比缩小图
factoryOptions.inSampleSize = scaleFactor;
// 样图可以回收内存
factoryOptions.inPurgeable = true;
Bitmap uploadImage = BitmapFactory
.decodeFile("/sdcard/AAAImage/image2.png", factoryOptions); imageView.setImageBitmap(uploadImage);
//加载显示一符图像,对内存的使用有显著影响,BitmapFactory提供了一系列静态方法加载不同来源的图片。 } }

位图缩放可以优化内存,面试必考

Bitmap缩放(二)的更多相关文章

  1. Android Bitmap 缩放 旋转 水印 裁剪操作

    在android当中,Bitmap代表一个图片,里面封装了图片相关的信息. 一.将图片进行缩放操作 1.获得Bitmap对象 Bitmap bitmap = BitmapFactory.decodeR ...

  2. c#工具类之Bitmap缩放帮忙类

    using System.Drawing; using System.Drawing.Drawing2D; /// <summary> /// BitmapHelper /// </ ...

  3. Bitmap缩放(一)

    使用矩阵进行压缩,通过缩放图片尺寸,来达到压缩图片的效果,和采样率的原理一样.先用位图的option将位图压缩一半,再用matrix缩放0.3f public class MainActivity e ...

  4. bitmap缩放时抗锯齿

    bitmap在进行放大缩小的时候经常会出现边缘锯齿的情况,通常的解决办法是在Paint中加入抗锯齿, paint.setAntiAlias(true); 但是有时候发现这并没有起到抗锯齿的作用,这是可 ...

  5. Bitmap缩放(三)

    质量压缩 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle ...

  6. Android开发之Bitmap二次采样

    Bitmap二次采样,听着好像是一个高大上的事,其实也就那么回事,今天我们就来看看Bitmap的二次采样问题. 1.为什么要二次采样 OK,那么首先我要 解决的一个问题就是为什么我们要二次采样? 不知 ...

  7. Android中Bitmap,byte[],Drawable相互转化

    一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...

  8. 【Android】[转] Android中Bitmap,byte[],Drawable相互转化

    一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...

  9. Android中Bitmap和Drawable

    一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...

随机推荐

  1. PyCharm专业版编辑器安装(含破解步骤)

    一.首先下载好安装包: 二.安装步骤: 1.双击安装包,打开安装界面,点击"next": 2.选择安装路径,点击"next": 3.电脑是64位的就勾选64-b ...

  2. ps -ef | grep使用详解

    转载于: https://www.cnblogs.com/freinds/p/8074651.html   ps命令将某个进程显示出来 grep命令是查找 中间的|是管道命令 是指ps命令与grep同 ...

  3. Spring--AOP的见解

    AOP是指面向切面编程,与JAVA中的动态代理有很深的渊源. 在使用Spring框架时,AOP编程能简化很多繁杂的步骤,精简代码. 切面:横切关注点(跨越程序中多个模块的功能),被模块化的特殊对象,也 ...

  4. 永久改变cmd背景颜色

    问题描述:cmd窗口为白底黑字,用久之后想换背景颜色. 解决方法一: win+R 输入regedis进入注册表,找到 HKEY_CURRENT_USER\Software\Microsoft\Comm ...

  5. SFUD+FAL+EasyFlash典型场景需求分析,并记一次实操记录

    SFUD+FAL+EasyFlash典型场景需求分析:用整个flash存储数据,上千条数据,读取得时候用easyflash很慢,估计要检索整个flash太慢了. 改进方法:分区检索. 1存数据时,根据 ...

  6. 实验 5:OpenFlow 协议分析和 OpenDaylight 安装

    一.实验目的 回顾 JDK 安装配置,了解 OpenDaylight 控制的安装,以及 Mininet 如何连接;通过抓包获取 OpenFlow 协议,验证 OpenFlow 协议和版本,了解协议内容 ...

  7. Java知识系统回顾整理01基础02面向对象03方法

    一.根据实例给出"方法"的定义 在LOL中,一个英雄可以做很多事情,比如超神,超鬼,坑队友 能做什么在类里面就叫做方法 比如队友残血正在逃跑,你过去把路给别人挡住了,导致他被杀掉. ...

  8. ATMEGA的SPI总线 - 第1部分

    转自: 1. https://www.yiboard.com/thread-782-1-1.html 2.https://mansfield-devine.com/speculatrix/2018/0 ...

  9. .NET Standard 版本支持

    系列目录     [已更新最新开发文章,点击查看详细] .NET标准已版本化.每个新版本都添加了更多的api.当库是针对某个.NET标准版本构建的时,它可以在实现该版本的.NET标准(或更高版本)的任 ...

  10. 笔记本键盘按U键却变成了4

    解答 笔记本键盘U盘变成了4,是因为你开启了小键盘功能.出现该问题,只要关闭小键盘功能即可,操作如下: 按住键盘下方的Fn,同时按住键盘顶部的F键中标有Numlk的键. 电脑屏幕出现解锁标志,小键盘功 ...