当前位置: 首页 > news >正文

网站修改wordpress外部链接

网站修改,wordpress外部链接,建立企业网站几天,交网站建设 域名计入什么科目笔者希望做一个系列,整理 Android 基础技术,本章是关于 Bitmap Bitmap 内存如何计算 占用内存 宽 * 缩放比例 * 高 * 缩放比例 * 每个像素所占字节 缩放比例 设备dpi/图片所在目录的dpi Bitmap加载优化?不改变图片质量的情况下怎么优化&am…

笔者希望做一个系列,整理 Android 基础技术,本章是关于 Bitmap 

Bitmap 内存如何计算

占用内存 = 宽 * 缩放比例 * 高 * 缩放比例 * 每个像素所占字节

缩放比例 = 设备dpi/图片所在目录的dpi

Bitmap加载优化?不改变图片质量的情况下怎么优化?

不同的Conifg代表每个像素不同的占用空间,所以如果我们把默认的ARGB_8888改成RGB_565,那么每个像素占用空间就会由4字节变成2字节了,那么图片所占内存就会减半了。

inSampleSize,采样率,这个参数是用于图片尺寸压缩的,他会在宽高的维度上每隔inSampleSize个像素进行一次采集,从而达到缩放图片的效果。这种方法只会改变图片大小,不会影响图片质量。

inJustDecodeBounds是什么?

要获取图片本身的大小,如果直接decodeResource加载一遍的话,那么就会增加内存了,所以官方提供了这样一个参数inJustDecodeBounds。如果inJustDecodeBounds为ture,那么decode的bitmap为null,也就是不返回实际的bitmap,只把图片的大小信息放到了options的值中。

所以这个参数就是用来获取图片的大小信息的同时不占用内存

Bitmap内存复用怎么实现
  • inBitmap要和inMutable属性配套使用,否则将无法复用。
  • 在Android 4.4之前,只能重用相同大小的 Bitmap 内存区域;4.4之后只要复用内存空间的Bitmap对象大小比  inBitmap指向的内存空间要小即可。

所以一般在复用之前,还要判断下,新的Bitmap内存是不是小于可以复用的Bitmap内存,然后才能进行复用。

高清大图加载该怎么处理?

要对图片进行局部显示,这就用到BitmapRegionDecoder属性,主要用于显示图片的某一块矩形区域。

fun setImagePart() {
        val inputStream: InputStream = assets.open("test.jpg")
        val bitmapRegionDecoder: BitmapRegionDecoder =
            BitmapRegionDecoder.newInstance(inputStream, false)
        val options = BitmapFactory.Options()
        val bitmap = bitmapRegionDecoder.decodeRegion(
            Rect(0, 0, 100, 100), options)
        image.setImageBitmap(bitmap)
    }

如何跨进程传递大图?
  • Bundle直接传递。bundle最常用于Activity间传递,也属于跨进程的一种方式,但是传递的大小有限制,一般为1M

Bitmap之所以可以直接传递,是因为其实现了Parcelable接口进行了序列化。而Parcelable的传递原理是利用了Binder机制,将Parcel序列化的数据写入到一个共享内存(缓冲区)中,读取的时候也会从这个缓冲区中去读取字节流,然后再反序列化成对象使用。这个共享内存也就是缓存区有一个大小限制—1M,而且是公用的。所以传图片的话很容易就容易超过这个大小然后报错TransactionTooLargeException。

所以这个方案不可靠。

文件传输

将图片保存到文件,然后只传输文件路径,这样肯定是可以的,但是不高效

putBinder

//传递binder
val bundle = Bundle()
bundle.putBinder("bitmap", BitmapBinder(mBitmap))//接收binder中的bitmap
val imageBinder: BitmapBinder = bundle.getBinder("bitmap") as BitmapBinder
val bitmap: Bitmap? = imageBinder.getBitmap()//Binder子类
class BitmapBinder :Binder(){private var bitmap: Bitmap? = nullfun ImageBinder(bitmap: Bitmap?) {this.bitmap = bitmap}fun getBitmap(): Bitmap? {return bitmap}
}

为什么用putBinder就没有大小限制了呢?

  • 因为putBinder中传递的其实是一个文件描述符fd,文件本身被放到一个共享内存中,然后获取到这个fd之后,只需要从共享内存中取出Bitmap数据即可,这样传输就很高效了。

(文件路径不也是?其实不同,文件描述符还用到 Mmap 虚拟内存和实际物理内存映射,更加高效)

  • 而用Intent/bundle直接传输的时候,会禁用文件描述符fd,只能在parcel的缓存区中分配空间来保存数据,所以无法突破1M的大小限制。

文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket。第一个打开的文件是0,第二个是1,依此类推。

http://www.yayakq.cn/news/567468/

相关文章:

  • 温州网站建设方案案例设计公众号商城
  • 海南住房与城乡建设网站自己做的网站 能收索么
  • 如何做网站推广及优化大数据分析网站
  • 成都微网站建设加强网站互动交流平台建设自查
  • 做网站运营有前景么WordPress图床源码
  • 东南亚做网站 什么语言百度广告位价格表
  • 上海建设局网站首页程序员怎么用wordpress
  • 南宁seo管理临沂seo公司稳健火星
  • 简述电子商务网站开发的基本原则视觉传达设计与人工智能
  • 网站为什么要挂服务器上工商网企业信息查询
  • 小型网站开发开题报告范文常见的电子商务网站推广方式
  • 如何将自己 做的网站发布网上机械加工图纸标注符号大全
  • 如何查看网站开发单位网络推广和竞价推广有什么区别
  • 建设一个网站的技术可行性研究网站续费话术
  • 建站方案书备案wordpress erp
  • 网站群建设模板迁移原站迁移pc揭阳网页制作
  • jquery 购物网站网站动态logo怎么做
  • 自适应响应式网站源码专业品牌营销策划
  • 桂林生活网官方网站南通做网站找谁
  • 个人网站设计与开发网站开通微信支付接口开发
  • 广州深圳做网站深圳外贸公司网站建设公司排名
  • 网站 设计风格中国十大最著名室内设计师
  • 外贸网站建设推广费用wordpress封面图插件
  • 中国市场营销网网站网站建设 昆明
  • 网站建设策划结束语win7电脑做网站
  • 湛江网站搜索引擎推广网站制作的核心技术
  • sql网站的发布流程wordpress显示自定义分类文章数量
  • 广州网站设计首选刻wordpress在php什么版本号
  • 连云港网站推广优化手机网站建设哪家优惠
  • 社交网站的设计上海专做特卖的网站