Android内存优化图片二次采样

Android图片的二次采样 为什么要进行二次采样? 在手机上显示一张分辨率特别大的图片和显示一张分辨率小的图片,对用户的视觉体验来说,并不会有多大变化,但是对我们手机的内存来说,影响却是非常巨大的。,二次采样就是为了避免图片加载时的内存溢出异常。 二次采样分别是哪两次 1.第一次采样 第一次采样我主要是想要获得图片的压缩比例,假如说我有一张图片是200*200,那么我想把这张图片的缩略图显示在一个50*50的Image... 阅读详情

lrucahe 图片的二次采样

        -    软引用 当内存不足时 自动回收 弱虚引用 当只有弱虚引用指向的时候就会被回收
    不再合适的原因: 应用程序当内存不足可以申请内存  所以 android 除了 新的 lrucache
Lrucache 最后参数不指定 一般是 指数量
键通常为 String 值通常为 bitmap

概念:

最不常用的,最先被删除,当size 超出的时候 
1将Lrucache 转换为 map  进行遍历

2. Map<String,String> snapshot = cache.snapshot();
3. Set<Map.Entry<String,String>> keyset = snapshot.entryset
4. for(Map.Entry<String,String> entries : keyset){

5. logd(entries.getValue());}


使用:

// 默认单位是 个数啊  擦
private Lrucahe<String,Bitmap> cache = new Lrucache<String,Bitmap>(10){
    protected int sizeOf(String key,String value){
        return 2 ;// 返回的是每一个元素 在内存中占的大小
}}

补充

    一个小图标 50*50  2500像素 一个像素 四个字节的话  10000k  所以字符串长度会忽  略不  计

概念二次采样

    假设从网上下载一张特别大的图片,下载到内存中后 直接 内存崩溃,我们需要先计算图片的大小,
计算好内存后再进行,先利用BitmapFactory.oOptions 设置图片的缩小比例,在进行载入即可
    ② 你利用 70*70 的空间 来存 300*300 的图片,不经二次采样,与经过二次采样的效果是
一样的,但是,所占用内存空间 差距了 300*300*4 * - 70*70*4 byte 差距巨大
    ③ 所谓二次采样 其实就是 一次 先采边框,二次 再采实际图片即可

使用 BOB BO TSF B

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = false ;//仅仅解析边框 默认为 false 
    options.inPreferredConfig = Bitmap.Config.RGB_565;     // 设定图片的载入方式
    Bitmap  bitmap = BitmapFactory.decodeResouce(getResources(),R.mipmap.ic_launch,options);
    Bitmap src = BitmapFactory.decodeResorce(getResources(),R.mipmap.main_img);

    //打印图片大小:
    -->logd("src--size"+src.getRowSize()*src.getHeight());
    // 二次采样使用:

如何从任何地方 读取图片:

使用类 :

BitmapFactory 每一个方法 都有两个重载方法 。

argb 8888 指每一项 占了 多少个字位

载入 Assest中图片的方法

存放图片放在 assest 文件下

        BitmapFactory.decodeStream(getAssets.open("earth.png"),null,options);
三级缓存与二次采样协同优化图像加载实战案例 htmltable {th, td {th {pre {简介:在移动开发与图像处理中,三级缓存和二次采样是提升性能、降低资源消耗的关键技术。三级缓存通过内存(如LruCache)、文件和网络多级存储机制,加快图片读取速度;二次采样则通过对大图进行下采样,快速生成适合屏幕显示的缩略图,避免OOM问题并提升加载效率。本文结合两者,在图片加载场景中实现高效显示方案:优先从缓存获取适配尺寸的图片,未命中时先采样展示低分辨率版本,并异步加载高清原图。 阅读详情

相关推荐

图片二次采样

加载大图片时,对图片进行二次采样

Android开发中图片二次采样(sd卡中图片)

MainActivity: package animtest.com.example.e531.myapplication; import android.Manifest; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFa...

baipenggui_bo 456

android大位图二次采样处理三

3 android 大位图二次采样处理三

android高级之图片二次采样

默认情况下,bitmap每个像素点占用4个字节(ARGB_8888),比如一张3543×3503的图片差不多在内存中占用47M,安卓系统给每个应用分配的内存都是有限的,可以使用Runtime.getRuntime().maxMemory()来获取。内存有限空间,默认情况下图片存储又需要大量的空间,于是就容易产生OOM(内存溢出),所有我们不得不对图片进行处理,这样便可以减少图片占用的内存空间

program008的博客 1700

Windows游戏玩家必看:用Process Lasso优化CPU优先级和核心绑定,告别卡顿

本文为Windows游戏玩家详细介绍了如何使用Process Lasso优化系统性能。通过设置CPU优先级和核心绑定,可以智能管理进程资源,确保游戏获得最高调度权限,有效减少因后台程序干扰或Windows调度机制不完善导致的卡顿与帧数波动,从而提升游戏流畅度与稳定性。

weixin_29299807的博客 2218

Fiddler Everywhere保姆级教程:10分钟搞定手机HTTPS抓包(附证书配置避坑指南)

本文提供Fiddler Everywhere移动端HTTPS抓包的保姆级教程,涵盖环境配置、代理设置、证书安装及常见问题排查。重点解析如何正确安装并信任Fiddler根证书以解密HTTPS流量,帮助开发者快速搭建抓包环境,高效分析应用网络行为,提升调试效率。

git9versioner的博客 705

Android Bitmap二次采样

Bitmap二次采样 一、二次采样: (一)、意义或目的: 1、用BitmapFactory解码一张图片时,有时会遇到该错误。这往往是由于图片过大造成的。要想正常使用,则需要分配更少的内存空间来存储。BitmapFactory.decodeFile(imageFile); 2、BitmapFactory.Options.inSampleSize:设置恰当的inSampleSize可以使BitmapFactory分配更少的空间以消除该错误。 3、BitmapFactory.Options提供了另一个成员inJ

yanhuomatou2015的博客 443

Spring Boot 微服务 API 网关实战:Spring Cloud Gateway 整合,搞定路由转发 + 统一认证 + 限流熔断(企业级落地)

摘要:本文详细介绍了SpringCloud Gateway在微服务架构中的核心作用与实现方案。作为API网关,它解决了服务入口分散、认证冗余、流量失控等痛点,提供路由转发、统一认证、限流熔断等能力。文章通过图书管理系统案例,演示了SpringBoot整合Gateway的全流程,包括基础路由配置、JWT全局认证、局部参数校验、Sentinel限流熔断以及Nacos动态路由等核心功能实现。特别强调了企业级落地中的关键注意事项,如路由顺序、过滤器执行顺序、HTTPS配置等。该方案能有效构建统一、安全、高效的微服务

lamehsl的专栏 1381

Android中图片的二次采样示例

一.概述 在安卓系统中,照片的大小是根据摄像头的分辨率而定的,一般是分辨率X4,就是照片的大。由于安卓系统中规定照片大小不能超过16M,因此,如果直接将照片存入内存,会造成OOM(内存溢出),故采用二次采样的方式对照片进行存储。下面分三种情景分别研究 1.直接取系统已经压缩过的缩略图: public class MainActivity extends AppCompatActivity

FightFightFight的博客 3872

AIGC实战——变分自编码器(Variational Autoencoder, VAE)

变分自编码器通过在模型中引入随机性,并限制潜空间中的点的分布来解决自编码器存在的问题。只需进行一些微小的调整,就可以将自编码器转换为变分自编码器,从而使其成为真正的生成模型。在本节中,我们介绍了变分自编码器的基本原理,并使用 `Keras` 实现了一个变分自编码器用于生成 Fashion-MNIST 图像。

盼小辉丶的博客 1万+

华为OD机考双机位C卷 - 构成正方形的数量 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 成正方形的数量 (OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 5938

三级缓存,二次采样

Listview:性能优化 1:Listview是需要和适配器配合使用的, 常用的适配器有arrayAdapter,SimplerAdapter,SimpleCursorAdapter,BaseAdapter, 一般情况下我使用的是继承BaseAdapter,实现它的四个方法,其中最重要的两个方法,getCount,和getView, 在不做任何处理的情况下getvie

zhangxin0414的博客 1712

基于知识图谱的智能工作流引擎

随着大数据和人工智能技术的快速发展,企业和组织对数据的依赖程度日益增加。为了更好地管理和利用这些数据,知识图谱逐渐成为一种重要的工具。知识图谱不仅能够以结构化的方式表示复杂的知识,而且能够通过推理和查询提供深层次的信息。然而,如何将知识图谱应用于实际业务场景中,尤其是如何构建智能工作流引擎,仍然是一个具有挑战性的问题。智能工作流引擎是一种能够自动化执行复杂业务流程的系统,它可以通过对业务规则和数据的分析,自动生成和优化工作流,从而提高工作效率和准确性。

AI天才研究院 1871

Android bitmap二次采样

package com.jason.android21_imagedecode; import java.io.File; import android.R.id; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.gr

loerier的博客 356

通过分子模板构建随机分布在溶液中的纳米颗粒(一)

通过分子模板构建随机分布在溶液中的纳米颗粒 要实现的目标: 1、可以循环建立多个水分子溶液的模型; 2、针对不同水分子数,自动创建文件夹; 3、运行完毕将所有结果自动存储在对应文件夹里; 分子模板的具体教程请见我的博客: https://blog.youkuaiyun.com/qq_43689832/article/details/104443175 1、首先,我们先建立纳米颗粒的分子模板,命名为p_30.txt: 包括两种原子类型。具体格式如下: # LAMMPS molecule file makin.

Rockyoung 2651

[Dify 案例实战] 构建一个基于 Dify 的个人写作助理工具-带绑定资源

想要一个懂你风格、能帮你写文章、润色文字、生成大纲的 AI 写作助手? 本文将带你从 0 到 1,完整实现一个 基于 Dify 工作流的个人写作助理工具。 我们会利用 Dify 的 LLM 节点、变量传递、文本处理、知识库与多轮对话能力.

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 276

图片的二次采样

图片的二次采样

Star_Q的博客 327

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android_Bitmap_图片的二次采样并生成缩略图

1.Bitmap概述 Android系统支持几种图片(.png (preferred), .jpg (acceptable), .gif (discouraged)), 其中Bitmap位图#ffffffff,包括图片透明度Alpha和RGB,图片质量很好,每一个像素位占4个字节,如果图片很大将会占据很大的内存空间。存储在SDCard的image很小,加载进内存可能就会很大。因此,对bitm

宇宙神帝 837

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android中Listview的优化

说起Listview的优化,老生常谈啊,面试必问的一个点。我在筛选面试简历的时候,发现一个童鞋简历上写着ListView优化使用三级缓存?什么鬼?我孤陋寡闻了,哈哈,之前还真不知道,网上看了下零零散散,这方面的讲解并不是很详细,搜罗了几篇文章,我在这里做一下整合,回头好好研究一下,大家共同学习。 首先Listview是需要和适配器配合使用的,常用的适配器有ArrayAdapter,SimplerAd

GeofferySun的专栏 862

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Bitmap 图片的二次采样

本文描述了关于图片的二次采样,,,

Shangfeihu_94的博客 353

图片的二级采样

1:布局         android:id="@+id/iv"         android:layout_width="wrap_content"         android:layout_height="wrap_content"        /> 2:MAinActivity 方法 public class MainActivity extends AppComp

Lianglei1994的博客 537

使用options对象进行二次采样

使用options对象进行二次采样,程序效果图: 结构图: activity_main.xml:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="m

人走丿茶凉 404
上一篇: Aidl 实现进程之间的通讯
下一篇: Java反射浅析
一朵红杏
博客等级 码龄12年 51粉丝 282原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值