首页
学习
活动
专区
圈层
工具
发布

Bitmap图片压缩,大图加载防止OOM

[在这里插入图片描述] 前言 Android官网中处理位图 和 [高效加载大型位图 ](https://developer.android.com/topic/performance/graphics/...否则,Android 系统必须缩放位图,使其在每个屏幕上占据相同的可见空间,从而导致缩放失真,如模糊。...前者是降低图像尺寸,改变图片的存储体积; 后者则是在不改变图片尺寸的情况下,通过损失颜色精度,达到相同目的; 压缩Bitmap磁盘占用空间的大小 //如果成功地把压缩数据写入输出流,则返回true。...下面的方法用于计算样本大小值,即基于目标宽度和高度的 2 的幂: public static int calculateInSampleSize( BitmapFactory.Options...不同的采样算法会产生不同效果,除了 Android 中这两种常用的采样算法之外,还有比较常见如:双立方/双三次采样(Bicubic Resampling) 和 Lanczos Resampling 等。

3.4K00

Bitmap图片压缩,大图加载防止OOM

在这里插入图片描述 前言 Android官网中处理位图 和 高效加载大型位图 这两篇文章中已经做了很明确指出了如何高效的加载大图。...否则,Android 系统必须缩放位图,使其在每个屏幕上占据相同的可见空间,从而导致缩放失真,如模糊。 ?...前者是降低图像尺寸,改变图片的存储体积; 后者则是在不改变图片尺寸的情况下,通过损失颜色精度,达到相同目的; 压缩Bitmap磁盘占用空间的大小 //如果成功地把压缩数据写入输出流,则返回true。...下面的方法用于计算样本大小值,即基于目标宽度和高度的 2 的幂: public static int calculateInSampleSize( BitmapFactory.Options...不同的采样算法会产生不同效果,除了 Android 中这两种常用的采样算法之外,还有比较常见如:双立方/双三次采样(Bicubic Resampling) 和 Lanczos Resampling 等。

2.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    bitmap的六种压缩方式,图片压缩

    ,可以从0–100改变,这里出来的log是: 可以看到,图片的大小是没有变的,因为质量压缩不会减少图片的像素,它是在保持像素的前提下改变图片的位深及透明度等,来达到压缩图片的目的,这也是为什么该方法叫质量压缩方法...Bitmap的内存分配,但是它可以返回Bitmap的宽度、高度以及MimeType。...()); 出来的log是 我们看到图片大小直接缩小了一半,长度和宽度也没有变,相比argb_8888减少了一半的内存。...); 出来的log是 这里是将图片压缩成用户所期望的长度和宽度,但是这里要说,如果用户期望的长度和宽度和原图长度宽度相差太多的话,图片会很不清晰。...android手机中,图片的所占的内存大小和很多因素相关,计算起来也很麻烦。

    3.8K20

    【Android开发基础系列】图片专题

    ,可以从0–100改变,这里出来的log是:         可以看到,图片的大小是没有变的,因为质量压缩不会减少图片的像素,它是在保持像素的前提下改变图片的位深及透明度等,来达到压缩图片的目的,这也是为什么该方法叫质量压缩方法...Bitmap的内存分配,但是它可以返回Bitmap的宽度、高度以及MimeType。...());         出来的log是:         我们看到图片大小直接缩小了一半,长度和宽度也没有变,相比argb_8888减少了一半的内存。         ...这里是将图片压缩成用户所期望的长度和宽度,但是这里要说,如果用户期望的长度和宽度和原图长度宽度相差太多的话,图片会很不清晰。         ...如果将这些压缩后的bitmap另存为sd中,他们的内存大小并不一样。         android手机中,图片的所占的内存大小和很多因素相关,计算起来也很麻烦。

    40820

    Android中文API——Bitmap

    public static Bitmap createBitmap (int width, int height, Bitmap.Config config) 返回一个指定高度和宽度的不可改变的位图。...height, Bitmap.Config config) 返回一个指定宽度和高度的不可变位图,该位图每个像素值等于颜色数组中对应的值。...public static Bitmap createBitmap (int[] colors, int width, int height, Bitmap.Config config) 返回一个宽度和高度被指定的不可改变的位图...它的初始像素密度由getDensity()决定。 参数 colors 用来初始化像素值得颜色数组。该数组必须至少和宽度*高度一样大。  ...public void recycle () 释放和位图相关的本地对象,且清除对像素数据的引用。该方法不会同步释放像素数据。它仅仅允许在没有其它引用的情况下被系统垃圾回收。

    1.7K30

    创建支持多种屏幕尺寸的Android应用

    * 为不同的屏幕密度提供不同的位图绘图* 默认情况下,Android调整你的位图绘图(.png, .jpg, and .gif 文件)和9补丁绘图(.9.png 文件),让他们在每个设备上以适当的物理尺寸呈现...为了把提供两种不同屏的布局变成可能,Android现在允许你基于宽度与/或者高度指定布局资源,在dp单位中指定,这对于应用程序布局很有效。...相反,在dp单位中的宽度或高度的尺寸对你的activity的窗口是可用的。Android系统可能会使用一些屏幕做系统UI(如屏幕底部的系统栏或顶部的状态栏),所以一些屏幕有可能对于你的布局是不可用的。...使用表2中的这些尺寸限定符,应用程序可以在使用任何想要的宽度或高度的平板和手机的不同布局资源间切换。...对于其他情况,你要进一步自定义你的UI以区分如7寸和10寸平板的尺寸,可以定义额外的最小宽度布局: res/layout/main_activity.xml # 适用于手机 (小于600dp的可用宽度)

    3.3K60

    TRTC案例:截图体积与清晰度

    像素数量即图片长宽尺寸;如1080x2130 2. 图片格式,主要是格式对应的压缩算法;如JPEG 3. 位深和色深、通道数量 4....尺寸: 像素数量这个就是字面意思,图片的高度乘以图片的宽度即可。 2. 位深 在某一分辨率下,每一个像素点可以有多少种色彩来描述,单位为“bit”(位)。...照片大小= 整张照片的像素总数*每个像素点上的颜色编码大小 (无压缩位图,BMP等格式都属于这种格式) 在不压缩的情况下,图片占用空间的大小: 照片大小= 整张照片的像素总数*每个像素点上的颜色编码大小...(无压缩位图) bmp位图的计算方式如下 大小=高度*宽度*位深/8/1024/1024 (MB) 如客户图1是未经压缩的位图: 1080*2130*32/8/1024/1024 = 8.77MB 如客户图...在这种情况下,它要么表示透明要么不是,因为alpha bit只有0或1两种不同表示的可能性。又如一个使用32个bit存储的位图,每8个bit表示红绿蓝,和alpha通道。

    3.2K10

    【Android 内存优化】图片文件压缩 ( Android 原生 API 提供的图片压缩功能能 | 图片质量压缩 | 图片尺寸压缩 )

    文章目录 一、 图片压缩 二、 图片文件压缩类型 三、 Android 原生 API 提供的质量压缩 四、 Android 原生 API 提供的尺寸压缩 一、 图片压缩 ---- 图片压缩 : ① 文件压缩...) 通道的信息 , 推荐使用 JPEG ; webp 目前使用还不是很广泛 ; 三、 Android 原生 API 提供的质量压缩 ---- 图片质量压缩函数原型 : 下面的函数原型中给出了详细注释...原生 API 提供的尺寸压缩 ---- 图片尺寸压缩函数原型 : 下面的函数原型中给出了详细注释 ; ① 函数作用 : 创建一个新的 Bitmap 对象 , 缩放一张已存在的位图 ; 如果指定的宽高与当前源位图的宽高一致..., 那么直接将源位图返回 ; ② 参数解析 : Bitmap src 参数 : 位图原图 ; int dstWidth 参数 : 图片转换后的目标宽度 ; int dstHeight 参数 : 图片转换后的目标高度...* 如果指定的宽高与当前源位图的宽高一致 , 那么直接将源位图返回 * * @param src 位图原图 * @param dstWidth 图片转换后的目标宽度

    5.9K20

    android学习笔记----关于图形的基本处理讲解

    ,jpg把bmp格式图片进行压缩,相邻位图差不多的就合并了,而png也是将bmp格式的图片压缩,压缩算法和jpg不一样,并且更高级。...样本大小是任一维度中与解码位图中的单个像素相对应的像素数。例如,inSampleSize == 4返回的图像是原始宽度/高度的1/4,像素数量的1/16。...设备分辨率越来越高,屏幕上具有的像素数量比这里显示的还要多,但是我们暂时先讨论这五大类: 密度独立像素来表示宽度和高度值,也就是说我们可以规定按钮的尺寸为 48 x 48 dip,实际上 Android...作为开发者,你应该用 dp 值来声明图片的宽度和高度,例如 48dp x 48dp。然后 Android 会确保所有这些图片在各种不同的设备上大概保持相同的尺寸,无论是每英寸的像素数量是多少。...dp和px之间的关系:1dp是屏幕密度为160dpi时的1px,也就是说在密度值为160dpi的情况下,1dp=1px。

    1.3K20

    为你重新系统梳理下, Web 体验优化中和图有关的那些事(万字长文)

    位图根据位深度,有 1、4、8、16、24、32 位图像等。位图放大会失真变模糊。 矢量图:计算机图形学中用点、直线或者多边形等基于数学方程的几何图元表示图像。...SVG 的优点是文件可读,易于修改编辑。支持多种滤镜和特殊效果,在不改变图像内容的前提下可以实现位图中类似文字阴影的效果,还可以生成动态图形。...变与不变 一些不变的部分,如第三方库的代码,可以考虑和业务代码分离,这样一来可以减少下载资源的大小 最佳的缓存周期 不同的资源可能有不同的更新要求,设置合适的 max-age Etag 当服务器上的资源未发生变动时不需要请求...示例:将图强制缩略成宽度为 100,高度为 100。 http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?...img-directions-for-use) 示例:将图强制缩略成宽度为 100,高度为 100。

    1.8K20

    浅谈 Web 图像优化

    常规的图像格式分为矢量图和位图。 原理: 矢量图形使用线、点和多边形来表示图像。 光栅图形,也可以成为位图,通过对矩形格栅内的每个像素的值进行编码表示图像。...这时候我们就需要位图,位图的格式有很多: GIF PNG JPEG JPEG-XR WebP Bpg 其中 Webp 是比较流行的图像格式方案,目前移动端 Android 4.0 以上、PC 端 chrome...另外如果考虑到更全的兼容性问题,还是得回归到 jpg 和 png 上,常规的的选择会用 jpg 作为背景图,png 作为小块的图片,当然都需要经过压缩,服务端可以使用 Gzip ,上传图片前还能使用工具进行一遍压缩...压缩可分为有损压缩和无损压缩。 使用有损压缩处理图像,是去除某些像素数据。 使用无损压缩处理图像,是对像素数据进行压缩。 压缩的方案可以根据需求选择。...块中有另外一个块会先设置一个 padding-bottom 来撑起块的高(即保证需要加载图像也是这个宽度高度的比例)。这样防止图片在加载时发生重排。 加载一个轻量版的图片。

    1.9K90

    【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( JNI 传递 Bitmap | 获取位图信息 | 获取图像数据 | 图像数据过滤 | 释放资源 )

    函数库头文件拷贝 | 构建脚本配置 | Android Studio 测试函数库 ) 中 对 libjpeg-turbo 函数库进行了交叉编译 , 拷贝了相应的头文件和静态库到 Android Studio...Bitmap 信息 : 在 AndroidBitmapInfo 结构体中 , 封装了图像宽度 , 图像高度 , 像素格式等信息 ; /** Bitmap info, see AndroidBitmap_getInfo...(). */ typedef struct { /** 图像像素宽度. */ uint32_t width; /** 图像像素高度. */ uint32_t...释放压缩数据 : 释放掉存储要压缩的 JPEG 图片 RGB 数据的内存 , 此时已经压完毕 , 可以将之前申请的内存都释放掉了 ; 注意之前申请的 data 指针 , 在拷贝数据过程中 , 将该指针移动过了...// 这里需要去掉透明度信息 // 获取图片的像素宽度 int width = info.width; // 获取图片的像素高度 int height = info.height

    1.7K20

    跨平台混编框架MUI仿豆瓣电影APP

    视觉一致 ≠ 体验一致MUI 在 iOS 上默认采用 Android 风格的控件(如底部导航栏、按钮涟漪效果),这会让 iOS 用户感到“违和”。...关键在于不依赖固定像素,而是以比例、最小宽度断点和内容优先级驱动布局变化。同时,图片加载做了懒加载与占位图优化,避免滚动卡顿。...四、性能与体验:跨平台不能只谈“能跑”,更要“流畅”初期版本在低端 Android 机上出现明显卡顿,排查发现是过度渲染和图片未压缩所致。...MUI 提供了强大的设计基础,但真正的用户体验来自于对平台特性的理解与尊重。iOS 和 Android 用户有不同的交互预期,强行抹平只会两头不讨好。...未来,我会继续探索如何在保持代码共享率的同时,更优雅地注入平台专属体验。

    24710

    CImage 类

    CImage::Draw 将位图从源矩形复制到目标矩形。 Draw 拉伸或压缩位图以适应目标矩形的尺寸(如有必要)并处理 alpha 混合和透明颜色。...对于 monochrome 位图或掩码,可以是 1。 eCompression 指定压缩的自下向上位图的压缩类型 (不能压缩自顶向下的 DIB) 。...BI_BITFIELDS 格式未压缩,颜色表包含三个颜色掩码,分别指定每个像素的红色、绿色和 DWORD 蓝色分量。 与 16 和 32-bpp 位图一同使用时,这一点有效。...xDest 目标矩形左上角的 x 坐标(以逻辑单位为单位)。 yDest 目标矩形左上角的 y 坐标(以逻辑单位为单位)。 nDestWidth 目标矩形和源位图的宽度(以逻辑单位为单位)。...nDestHeight 目标矩形和源位图的高度(以逻辑单位为单位)。 xSrc 源位图左上角的逻辑 x 坐标。 ySrc 源位图左上角的逻辑 y 坐标。

    4.1K40

    为何大厂的图片不会OOM?

    WEBP :表示以WebP压缩算法进行图像压缩,压缩后的格式可以是".webp",是一种有损压缩,质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%,美中不足的是,WebP格式图像的编码时间...系统默认存储位图方式是 ARGB_8888, 4个通道组成,每个通道8位,分表代表透明度和RGB颜色值, 也就是说一个位图像素占用了4个字节(1个byte8个bit位), 同理:采用 Bitmap.Config.RGB...; BitmapFactory 创建位图bitmap对象途径有很多种, 包括指定文件、流, 和字节数组等; ?...2倍,总大小缩小4倍; inBitmap :被复用的bitmap; inJustDecodeBound : 如果设置为true,不获取图片,不分配内存,但会返回图片的高度宽度信息; inMutable...这种情况下通过使用适当的缓存,可以有效地减缓 GC 频率保证图片加载效率,提高界面的响应速度和流畅性。 最常用的缓存方式就是 LruCache,基本使用方式如下: ?

    1.4K21

    Android-图片压缩(二)-纯干货

    质量压缩 采样率压缩 缩放压缩 减少图片的像素,缩略图 JNI调用JPEG库 Android目前常用的图片格式有png,jpeg和webp, png:无损压缩图片格式,支持Alpha...通道,Android切图素材多采用此格式 jpeg:有损压缩图片格式,不支持背景透明,适用于照片等色彩丰富的大图压缩,不适合logo webp:是一种同时提供了有损压缩和无损压缩的图片格式...在Android4.0(API 14)之后支持,无损和透明在Android4.3(API18)之后支持 采用webp能够在保持图片清晰度的情况下,可以有效减小图片所占有的磁盘空间大小...Android中Bitmap所占内存大小计算方式:图片长度 x 图片宽度 x 一个像素点占用的字节数 3、压缩的常见方式 质量压缩:降低存储体积(不改变内存中Bitmap的大小) 采样压缩...+bitmap.getByteCount() +"\n宽度》"+bitmap.getWidth() +"\n高度》"+bitmap.getHeight()

    1.6K20

    2014-10-25Android学习------布局处理(-)

    控件的宽高:layout_width与layout_height android:layout_width表示控件的宽度,android_layout_height表示控件的高度 其属性值有wrap_content...上面说的很不好理解,继续看下面: android:layout_width="fill_parent"定义当前视图在屏幕上 可以消费的宽度,fill_parent即填充整个屏幕的宽度 android...":随着文字栏位的不同 而改变这个视图的宽度或者高度。...有点自动设置框度或者高度的意思 注意: android:width 其实是定义控件上面的文本(TextView) 的宽度,当然这个宽度也是和 android:layout_width 配合起来作用的..." 的属性是指控件中文本的格式,如gravity是指文本的对齐方式等等,而其中文本的格式又受制约于它的控件在父控件中的属性. 2)线性布局的方向设置:android:orientation="";

    2.1K40

    SCI论文绘图那些事

    通俗来讲,相机拍出来的都是位图,用函数生成的图都是矢量图。矢量图和位图的差别从下图可以表现出来: ?...插图尺寸 绝大多数SCI期刊对于插图排版的规格有三种版式:单栏图、1.5栏图、双栏图,三种插图对于插图的宽度设置各不相同,而在两边留白和高度上的要求则没有差别,具体如下: 单栏图, 一般由一个或多个小图构成...,插图总宽度一般为 8~9 cm ,插图左右留白须适度,尽量少留白,SCI期刊对于插图高度的限制较为宽松,但一般不超过 24 cm 。...1.5栏图, 一般由一个或多个小图构成,插图总宽度一般为 11.4~14 cm,插图左右留白须适度,尽量少留白,同样,高度一般不超过 24 cm 。...双栏图, 一般由一个或多个小图构成,插图总宽度一般为 17.1~19 cm,插图左右留白须适度,尽量少留白,同样,高度一般不超过 24 cm 。 ?

    2.5K30
    领券