展开

关键词

bitmap的六种式,图片

,首先要知道bitmap所占内存大小计算式:图片长度 x 图片宽度 x 一个像素点占用的字节数以下是图片的格式:其中,A代表透明度;R代表红色;G代表绿色;B代表蓝色。 进行,下面开始说,bitmap的几种式。 ,它是在保持像素的前提下改变图片的位深及透明度等,来达到图片的目的,这也是为什么该叫质量。 我上面的代码没用过options.inJustDecodeBounds = true; 因为我是固定来取样的数据,为什么这个叫采样率,是因为配合inJustDecodeBounds,先获取图片的宽 总结以上就是5种图片,这里需要强调,他们的仅仅只是对android中的bitmap来说的。如果将这些后的bitmap另存为sd中,他们的内存大小并不一样。

15220

Android Bitmap式分析

Android Bitmap式分析在网上调查了图片并实装后,大致上可以认为有两类:质量(不改变图片的尺寸)和尺寸(相当于是像素上的);质量一般可用于上传大图前的处理, 这样就可以节省一定的流量,毕竟现在的手机拍照都能达到3M左右了,尺寸一般可用于生成略图。 在Android开发中我们都会遇到在一个100*100的ImageView上显示一张过大的图片,如果直接把这张图片显示上去对我们应用没有一点好处反而存在OOM的危险,所以我们有必要采用一种有效式来显示上去 做: 1.optioins.inJustDecodeBounds = true设置为true可用于读取该bitmap的宽高且不会占用内存。 (Bitmap bitmap) { Log.w(TAG, Bitmap size = + bitmap.getByteCount()); }采用以上的式 我们就能避免一张过大的图片”浪费”的显示在

14520
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年38元,还有多款热门云产品满足您的上云需求

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

    详解Android Bitmap的常用

    Android中的图片是以Bitmap式存在的,绘制的时候也是Bitmap,直接影响到app运行时的内存,在Android,Bitmap所占用的内存计算公式是:图片长度 x 图片宽度 x像素点的字节数二 三、常用的:1.质量 private void compressQuality() { Bitmap bm = BitmapFactory.decodeResource(getResources bitamp的尺寸,通过调节其inSampleSize参数,比如调节为2,宽高会为原来的12,内存变回原来的14.3.放 private void compressMatrix() { Matrix 五、总结以上5种就是我们常用的了,这里的也只是针对在运行加载的bitmap占用内存的大小。 我们在做App内存优化的时候,一般可以从这两个面入手,一个内存泄漏,另外一个是Bitmap了,在要求像素不高的情况下,可以对Bitmap进行,并且针对一些只使用一次的bitmap,要做好recycle

    18610

    Roaring Bitmap更好的位图

    为了降低内存的使用,我们经常会使用的位图。Roaring Bitmaps 是一种的位图,要优于常规的位图,例如 WAH,EWAH 或者 Concise。 在某些情况下,可以比它们快几百倍,并且通常提供更好的。 每个桶都有对应的 Container,不同的 Container 存储式不同。 Bitmap Container第二种 Container 是 Bitmap Container。 由于每个 Bitmap Container 需要处理低 16 位数据,也就是需要使用 Bitmap 来存储需要 8192 B(2^168), 而一个 Long 值占 8 个 B,所以数组大小为 1024

    3.9K71

    Android Bitmap优化(采样

    Bitmap 的采样(这个采样率是根据需求来进行生成的),使用到了inBitmap内存复用和 inJustDecodeBounds 采样的流程:将 BitmapFactory.Options 的 inJustDecodeBounds ** * 采样率,这个和矩阵来实现放有点类似,但是有一个原则是“大图小用用采样,小图大用用矩阵”。 * 也可以先用采样来图片,这样内存小了,可是图的尺寸也小。 baos = new ByteArrayOutputStream(); image.compress(compressFormat, 80, baos);0~100质量,这里80表示80%不20%,把后的数据存放到baos中 ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());把后的数据 }catch (OutOfMemoryError e){ compressBitmap = null; System.gc(); } return compressBitmap; } ** * 采样比例

    7520

    Android:Base64生产Bitmap和转byte[]

    最近在做微信分享的时候遇到了分享图片的大小限制问题,需要对图片进行。在过程中遇到几个有趣的地在此记录。 Bitmap.getByteCount的大小和转化为byte compressBitmap(Bitmap bitmap, double maxSize, boolean needRecycle) { if (); 计算等比放 double x = Math.sqrt(maxSize (width * height)); Bitmap tmp = Bitmap.createScaledBitmap(bitmap ByteArrayOutputStream(); int options = 100; 生产byte与上线存储空间的大小 if (baos.toByteArray().length > maxSize) { 根据内存大小的比例,进行质量的 baos.toByteArray().length) * 100); baos.reset(); tmp.compress(Bitmap.CompressFormat.JPEG, options, baos); 循环

    30510

    android bitmap几种色彩详解

    android中的大图片一般都要经过才显示,不然容易发生oom,一般我们的时候都只关注其尺寸面的大小,其实除了尺寸之外,影响一个图片占用空间的还有其色彩细节。 打开Android.graphics.Bitmap类里有一个内部类Bitmap.Config类,在Bitmap类里createBitmap(intwidth, int height, Bitmap.Config config)里会用到,打开个这个类一看 枚举变量 public static final Bitmap.Config ALPHA_8 public static final Bitmap.Config 其实这都是色彩的存储:我们知道ARGB指的是一种色彩模式,里面A代表Alpha,R表示red,G表示green,B表示blue,其实所有的可见色都是右红绿蓝组成的,所以红绿蓝又称为三原色,每个原色都存储着所表示颜色的信息值 例子: Bitmap bg = Bitmap.createBitmap(width, height, Config.ARGB_8888);

    52650

    leveldb uint32

    leveldb 采用 protocalbuffer 里使用的变长整形编码案,以节省空间;一个byte分成两部分:最高1个bit 和 剩余7个bit;最高1个bit 以用来表示 剩余7个bit 是否能装下

    33000

    Android图片处理工具类BitmapUtils

    *public class BitmapUtils {*** 屏幕分辨率和指定清晰度的图片** @param context* @param image Bitmap图片* @return*public ByteArrayOutputStream baos = new ByteArrayOutputStream();image.compress(Bitmap.CompressFormat.JPEG, 100, baos); 质量 屏幕分辨率和指定清晰度的图片** @param context* @param path 图片的路径* @return*public static Bitmap comp(Context context ByteArrayOutputStream baos = new ByteArrayOutputStream();image.compress(Bitmap.CompressFormat.JPEG, 100, baos); 质量 把ByteArrayInputStream数据生成图片return bitmap;}*** 指定分辨率和清晰度的图片** @param fromFile* @param toFile* @param

    23510

    Android小知识之图片的3种式小结

    所占内存大小计算式:图片长度 x 图片宽度 x 一个像素点占用的字节数 1、Bitmap的Compress(质量):public boolean compress(CompressFormat bitmap的compressbitmap进行质量,10%,90%不。 图片的大小是没有变的,因为质量不会减少图片的像素,它是在保持像素的前提下改变图片的位深及透明度等,来达到图片的目的,这也是为什么该叫质量。 quality值越小后的baos越小(使用场景:在微信分享时,需要对图片的字节数组大小进行限制,这时可以使用bitmap的compress对图片进行质量)。 根据原bitmap的 宽高和目标宽高计算出合适的inSampleSize,最后将inJustDecodeBounds设置为true,通过BitmapFactory的decodeXXXX解码图片(

    20810

    Linux的和解总结

    Linux的和解总结一 常用的格式 .zip.gz.bz2.tar.gz.tar.bz2二 .zip格式 1、语 zip 文件名 源文件名 文件 zip -r 文件名 源目录 目录 unzip 文件 解.zip文件 2、说明 .zip的格式在windows和LInux是通用的。 dirtst.zipArchive: dirtst.zipcreating: dirtstextracting: dirtstert# lsabc abc.zip cdf dirtst dirtst.zip以上就是Linux 和解的实例详解

    13631

    Android-图片

    :大多数人采用先生成bitmap对象,反复bitmap至100k一下的,对图片进行反复,但如果是超级大图,bitmap生成本身就已经会导致OOM,所以我们应先对bitmap进行设置:public 二、关于activity:由于图像处理的与主活动无关,所以我这里将其封装在一个特定静态类中,但是由于执行过程中需要使用著获得(Activity类对象)的,所以将主活动作为一个参数(activity 之后再采用反复bitmap来保证大小:private static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 100, baos);质量,这里100表示不 ());把后的数据baos存放到ByteArrayInputStream中 Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);

    8710

    Android开发之图片实现分析

    本文实例讲述了Android开发之图片实现。 :大多数人采用先生成bitmap对象,反复bitmap至100k一下的,对图片进行反复,但如果是超级大图,bitmap生成本身就已经会导致OOM,所以我们应先对bitmap进行设置:public 二、关于activity:由于图像处理的与主活动无关,所以我这里将其封装在一个特定静态类中,但是由于执行过程中需要使用著获得(Activity类对象)的,所以将主活动作为一个参数(activity 再MainActivity中activity这样赋值:activity=MainActivity.this之后再采用反复bitmap来保证大小:private static Bitmap compressImage , 100, baos);质量,这里100表示不,把后的数据存放到baos中 int options = 100; while ( baos.toByteArray().length

    21620

    Android中的Bitmap的详细介绍

    recycle进行回收,该也可以不主动调用,因为垃圾回收器会自动收集不可用的Bitmap对象进行回收 recycle会判断Bitmap在不可用的情况下,将发送指令到垃圾回收器,让其回收native 层和Java层的内存,则Bitmap进入dead状态 recycle是不可逆的,如果再次调用getPixels()等,则获取不到想要的结果 LruCache原理 LruCache是个泛型类,内部采用 LinkedHashMap来实现缓存机制,它提供get和put来获取缓存和添加缓存,其最重要的trimToSize是用来移除最少使用的缓存和使用最久的缓存,并添加最新的缓存到队列中 计算inSampleSize ,format,quality,desFile); } 一、质量 质量:在保持像素的前提下改变图片的位深及透明度等,来达到图片的目的: 1、bitmap图片的大小不会改变 2、bytes.length = null) { loga(bitmap, baos.toByteArray()); } return bitmap;} 质量,options的值是0-100,这里100表示原来图片的质量,

    52710

    Android笔记:根据图片url获取bitmap或者drawable,然后再进行处理

    Bitmap.CompressFormat.PNG:Bitmap.CompressFormat.JPEG; image.compress(Bitmap.CompressFormat.JPEG, 100, baos);质量 ,这里100表示不,把后的数据存放到baos中 image.compress(Type, 100, baos);质量,这里100表示不,把后的数据存放到baos中 int options 即清空baos image.compress(Bitmap.CompressFormat.JPEG, options, baos);这里options%,把后的数据存放到baos中 options 数据生成图片 return bitmap; } ** * 图片按比例大小(根据路径获取图片并) * public Bitmap getimage(String srcPath) { BitmapFactory.Options 50%,把后的数据存放到baos中 image.compress(Type, 50, baos);这里50%,把后的数据存放到baos中 } ByteArrayInputStream isBm

    7330

    为何大厂的图片不会OOM?

    内部提供了三种图片式类型,JPEG :表示Bitmap采用JPEG进行后的格式可以是.jpg或者.png,是一种有损式。 PNG : 表示Bitmap采用PNG进行后的格式可以是.png,是一种无损式。 WEBP :表示以WebP进行图像后的格式可以是.webp,是一种有损,质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%,美中不足的是,WebP格式图像的编码时间 意为Android10之后如果quality值(质量)为100的话,bitmap采用无损格式,其他都为有损;这里有的同志会问,这都是格式啊,具体怎么操作呢,Bitmap为我们提供了一个可靠的供开发者使用 从官网介绍可知, 该在图片过程中可能消耗较长时间,建议放在子线程中操作,至于为什么大家可以看看源码, 源码中会调用一个nativeCompress 的Native ,也就是处理是放在底层处理的

    29320

    Android给scrollView截图超过屏幕大小形成长图

    new Canvas(bitmap); scrollView.draw(canvas); return bitmap; } ** * 图片 * @param image * @return * public ; 质量,这里100表示不,把后的数据存放到baos中 image.compress(Bitmap.CompressFormat.JPEG, 100, baos); int options = 100; 循环判断如果后图片是否大于100kb,大于继续 while (baos.toByteArray().length 1024 100) { 重置baos baos.reset (); 这里options%,把后的数据存放到baos中 image.compress(Bitmap.CompressFormat.JPEG, options, baos); 每次都减少10 getBitmapByView()即可: String fname = ScreenShot.savePic(ScreenShot.getBitmapByView(scrollView)); 但是这样写的话有时候会因为截取的图片太长太大而报

    48510

    Android图片处理工具类(圆角,

    bitmap.isRecycled()) { bitmap.recycle(); } bitmap = null; return newBitmap;} ** * * 概述:进入图片的大小与质量 hh); } if (be size && options 3 > 0) { 循环判断如果后图片是否大于10kb,大于继续 baos.reset(); 重置baos即清空baos image.compress (Bitmap.CompressFormat.JPEG, options, baos); 这里options%,把后的数据存放到baos中 options -= options 3; 每次都减少 ;} ** * * 概述:保存图片 *public static String saveBitmapWithName(String path, String bitName, Bitmap mBitmap e.printStackTrace(); } try { fOut.close(); } catch (IOException e) { e.printStackTrace(); } return url;} ** * * 概述

    10120

    android图片工具类分享

    import android.widget.Toast; ** * 圆形图片工具类 * * @author SKLM * * public class ImageViewTool { ** * 我们先看下质量 baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 100, baos); 质量,这里 100表示不,把后的数据存放到baos中 int options = 100; while (baos.toByteArray().length 1024 100) { 循环判断如果后图片是否大于 (baos.toByteArray()); 把后的数据baos存放到ByteArrayInputStream中 Bitmap bitmap = BitmapFactory.decodeStream( isBm, null, null); 把ByteArrayInputStream数据生成图片 return bitmap; } ** * 图片按比例大小(根据路径获取图片并) * * @param

    22710

    Android图片的实例详解

    android图片主要有两种式:1.图片分辨率 2.图片质量一、先看图片分辨率,很好理解,如本来1280*768的图片为640*384大小。 inBitmap, outWidth, outHeight, true); if (needRecycled) { inBitmap.recycle(); } return thumbBmp; } 前两个可以指定期望的宽度或高度 ,并按比例放图片的分辨率,第3个可以随意指定期望的宽高,放图片。 上面代码是对输入的bitmap进行放,还可以从资源或文件中加载图片并放,具体如下:** * 从资源加载并图片 * @param res * @param resId * @param outWidth 原始bitmap * @param outSize 到的大小 * @param needRecycled 是否回收bitmap * @return * public static Bitmap compressImage

    14331

    相关产品

    • 图片处理

      图片处理

      图片处理(IP)是由腾讯云数据万象提供的功能丰富、低成本、高可靠的图片处理服务。图片处理支持灵活的图像编辑,并且提供 Guetzli 压缩、TPG 转码等图片瘦身解决方案,图片或文字水印、独有盲水印等版权保护解决方案,满足多种业务场景下的图片需求。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券