美文网首页
Android加载大图

Android加载大图

作者: 莲_藕 | 来源:发表于2020-07-28 21:56 被阅读0次

首先,存储在磁盘上的图片是被压缩过的(以JPG,PNG或类似的格式存储)。 一旦将图片加载到内存中,它就不再被压缩,并占用尽可能多的图片的所有像素所需的内存空间。

其次,加载大图的步骤:

1.获取图片的宽和高:BitmapFactory.Options

BitmapFactory可以为我们提供图片的元数据。我们可以使用这个类来实现第一步。

BitmapFactory.Options options = new BitmapFactory.Options();

options.inJustDecodeBounds =true;//不想将图片加载到内存中。获取图片的相关信息(宽度,高度等),并使用这些信息来计算缩放比例。

BitmapFactory.decodeResource(getResources(), R.mipmap.hqimage, options);

2.根据图片的宽和高计算缩放比Reducing Image Size (In Memory)

:现在我们需要计算inSampleSize。其是BitmapFactory.Options类的一个属性,用于设置图片的缩放比。

如果我们有一张尺寸为1000x1000的图片,并且在解码之前设置inSampleSize的值为2, 那么解码之后,我们将得到一张尺寸为500x500的图片。

BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds =true;options.inSampleSize = 3; BitmapFactory.decodeResource(getResources(), R.mipmap.hqimage, options);

注意:inSampleSize 设置为 5 , 最终 会被 取整为 4

3.根据缩放比将图片加载到内存中。Reducing Image Size (In Disk)

我们还可以使用Bitmap的compress方法对磁盘上的图片进行压缩。我们来看看在不改变图片质量的情况下图片被压缩后的大小。 100表示与原图保持相同的质量。

ByteArrayOutputStream bos = new ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);

byte[] bitmapdata = bos.toByteArray();

通过计算得到图片在磁盘上的大小为1.6 MB。

我们把compress方法中的质量参数改为50,并再次计算图片大小

bitmap.compress(Bitmap.CompressFormat.JPEG, 50, bos);

通过计算得到图片在磁盘上的大小为24.4 KB。

注意:在改变compress方法中的质量参数的时候,压缩格式应该是.JPEG。设置为PNG格式的时候,修改是无效的。

相关文章

  • Android自定义View实现加载大长图

    Android加载大长图 一、为什么Android加载图片要进行压缩? Android系统为app分配的内存是有限...

  • Android加载大图和Lrucache 避免oom

    高效加载大图片 (转自)Android高效加载大图、多图解决方案,有效避免程序OOM BitmapFactory这...

  • android加载大图

    在项目中可能有这样一个需求,需要加载巨大的图片 并且还不允许压缩。比如显示:世界地图、清明上河图、微博长图等。 那...

  • Android加载大图

    1.利用BitmapFactory.Options的inJustDecodeBounds属性来读取图片尺寸.参考:...

  • Android 大图加载

    简介 这个项目是一个用于Android预览大图片的图片显示库,可实现原始图片高清显示,专门针对大图片做了很多优化,...

  • Android大图加载

    Android不同的图片模式,每个像素占用的字节大小 requeLayout()、invalidate() req...

  • Android大图加载

    最近公司一个需求,加载一张超大图,允许手势放大缩小以及左右滑动查看。第一想法是利用inSampleSize缩小图片...

  • Android加载大图

    首先,存储在磁盘上的图片是被压缩过的(以JPG,PNG或类似的格式存储)。 一旦将图片加载到内存中,它就不再被压缩...

  • Android 高效加载大图

    1.读取图片信息(宽、高、MimeType) 当然以下静态方法也是可以获得options对象的 2.计算缩放大小 ...

  • Android加载大图——BitmapRegionDecoder

    一、前言 在Android开发中,加载图片是很常见的情况,我们一般选择传统的加载图片框架如universalima...

网友评论

      本文标题:Android加载大图

      本文链接:https://www.haomeiwen.com/subject/djgqrktx.html