在 Canvas 图像来源 CanvasImageSource 章节中我们有提到可以使用 ImageBitmap 作为 drawImage() 的图像来源

ImageBitmap

ImageBitmap 是什么呢?

ImageBitmap 是一个高性能的位图,可以低延迟地绘制,它可以从前几章节中学到的所有源以及其它几种源中生成

什么意思呢?

也就是说,ImageBitmap 可以从一张图片,比如 png,jpg,gif 中生成,也可以从 ,, 中生成

简直就是 海纳百川,有容波大 啊

那它到底是怎么生成的呢?

ImageBitmap 使用 createImageBitmap() 工厂方法模式,从多种源中生成

createImageBitmap() 方法

createImageBitmap() 方法是 window 对象的一个方法

不过这个方法很坑,很多浏览器不支持

Yes

不支持

49+

不支持

基本属性

createImageBitmap 接受各种不同的图像来源, 并返回一个 Promise,

语法

createImageBitmap(image[, options]).then(function(response) { ... });

createImageBitmap(image, sx, sy, sw, sh[, options]).then(function(response) { ... });

参数

说明

image

一个图像源

sx

裁剪点 x 坐标

sy

裁剪点 y 坐标

sw

裁剪宽度,值可为负数

sh

裁剪高度,值可为负数

options

可选,一个字典,由于设置各种选项

image 参数

image 参数是一个图像源,可以是以下资源

SVG

HTMLImageElement

SVGImageElement

HTMLVideoElement

HTMLCanvasElement

Blob

ImageData

ImageBitmap

OffscreenCanvas

几乎囊括了所有可绘制对象

option 参数

可选,一个字典,由于设置各种选项,可用的选项有

选项

说明

imageOrientation

指示图像是按原样呈现还是垂直翻转,可选的值有:

none (默认,不翻转)

flipY

premultiplyAlpha

指示位图颜色通道由 alpha 通道预乘,可选的值有

none

premultiply

default (默认)

colorSpaceConversion

指示图像是否使用色彩空间转换进行解码

none

default (默认)

resizeWidth

缩放到新的宽度

resizeHeight

缩放到新的高度

resizeQuality

指定图像缩放压缩质量,可选的值有

pixelated

low (默认)

medium

high

返回值

返回一个 Promise ,参数 resolve 为一个 ImageBitmap 对象

ImageBitmap 属性和方法

ImageBitmap 具有以下属性和方法

属性

说明

height

只读,正整数,以 px 为单位的图像高度

width

只读,正整数,以 px 为单位的图像的宽度

方法

说明

close()

释放 ImageBitmap 所相关联的所有图形资源

范例

我们先准备一张图片,比如 https://www.twle.cn/static/i/meimei_160x160.png

我们先使用 createImageBitmap() 方法裁剪出图片 (10,10) 开始的 100x100 大小的部分

然后使用 drawImage(bitmap) 绘制到画布 (50,50) 的位置上

var c = document.getElementById("canvas-1");

var ctx = c.getContext("2d");

image = new Image();

image.onload = function() {

Promise.all([

createImageBitmap(this, 10, 10, 100, 100),

]).then(function(sprites) {

ctx.drawImage(sprites[0], 50, 50,sprites[0].width,sprites[0].height);

});

}

image.src = 'https://www.twle.cn/static/i/meimei_160x160.png';

运行效果如下

html绘制位图,Canvas 绘制位图图像 ImageBitmap相关推荐

  1. HTML绘制七巧板,canvas绘制七巧板

    > 脚本语言 > > canvas绘制七巧板 2017-04-19 14:10 出处:清屏网 人气: 在上一节中,我们了解了如何使用canvas绘制线段,这一节,我们使用canvas ...

  2. 【Android 应用开发】Canvas 绘制文字 ( 文字尺寸测量 | 基线绘制 )

    文章目录 I . 文字尺寸测量 II . 基线绘制 I . 文字尺寸测量 1 . 精准绘制需求 : Canvas 绘制文字时 , 有时需要精准的控制文字的绘制 , 如绘制到指定的区域 , 居中 , 或 ...

  3. Canvas学习:封装Canvas绘制基本图形API

    Canvas学习:封装Canvas绘制基本图形API Canvas Canvas学习 从前面的文章中我们了解到,通过Canvas中的CanvasRenderingContext2D对象中的属性和方法, ...

  4. openlayers3线段添加闪烁_openLayers 4 canvas图例绘制,canvas循环添加图片,解决图片闪烁问题...

    一.问题来源: 接触Openlayers 一段时间了,最近做了一个农业产业系统,项目中涉及到产业图例,最后考虑用canvas来绘制图例图像.当中带图片的图例移动时,图片会实现闪烁留白情况.闪烁是因为绘 ...

  5. android canvas绘制圆角_Android自定义View撸一个渐变的温度指示器(TmepView)

    秦子帅明确目标,每天进步一点点..... 作者 |  andy 地址 |  blog.csdn.net/Andy_l1/article/details/82910061 1.概述 自定义View对需要 ...

  6. 【Android 应用开发】Paint 渲染 之 BitmapShader 位图渲染 ( 渲染流程 | CLAMP 拉伸最后像素 | REPEAT 重复绘制图片 | MIRROR 绘制反向图片 )

    文章目录 1. 位图渲染 BitmapShader 简介 ( 1 ) 位图渲染综述 ( ① 三种方式 : Shader.TileMode.CLAMP | Shader.TileMode.REPEAT ...

  7. android 自定义多边形,Android:自定义view之Canvas绘制图形

    前面讲解了onMeasure,接下来讲解onDraw,onDraw主要就是绘制,也就是我们真正关心的部分,使用的是Canvas绘图. @Override protected void onDraw(C ...

  8. android opengl es 绘制位图字体

    Android中绘制字体,用到了canvas,下面代码里面为我写的实例,几乎每行代码都有注释. 1.Activity 类 import android.app.Activity; import and ...

  9. 精通Android自定义View(九)绘制篇Canvas分析之绘制图片

    绘制图片分为:绘制矢量图(drawPicture)和 绘制位图(drawBitmap) 1 drawBitmap 1.1 基本的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,to ...

  10. 精通Android自定义View(八)绘制篇Canvas分析之绘制文本

    1 简述 绘制文字分为三种应用场景: 情况1:指定文本开始的位置 即指定文本基线位置 基线x默认在字符串左侧,基线y默认在字符串下方 情况2:指定每个文字的位置 情况3:指定路径,并根据路径绘制文字 ...

最新文章

  1. [原]请留心asp:Image控件中的ImageUrl属性
  2. 数组树/fenwicktree/Binary Indexed Tree
  3. 微服务2.0技术栈选型手册,值得架构师借鉴
  4. 使用TimeQuest时序分析器
  5. 树莓派支持uvi协议吗_树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi)...
  6. Unparsed aapt error(s)! Check the console for output
  7. ElasticSearch聚合查询
  8. 从Oracle向PPAS移行不成功时的处理
  9. python画曲线图-python画曲线
  10. iptv服务器维护中,iptv升级服务器地址
  11. python三对角矩阵_用NumPy实现三对角矩阵算法(TDMA)
  12. 一种通过 ZoomEye 捕获全新 Docker 蜜罐的案例
  13. 2022年电子邮箱哪个好用?邮箱大全测评来了,请及时查看哦
  14. 电商网站之订单查询功能
  15. 鲁毅智权力交接:对AMD的影响还将继续
  16. 生活记录:其实超度的是活着的人
  17. 电子电路笔记----基本放大电路--半导体三极管
  18. Gradle教程和指南 - 构建审视
  19. 【SQL注入】手工注入常用语句合集
  20. 【沧海拾昧】微机原理:可编程计数器/定时器8253芯片

热门文章

  1. 全国首款网页版(web)真3D商城
  2. 基于MATLAB步态算法仿真的六足仿生机器人
  3. 洛谷P4548 [CTSC2006]歌唱王国(概率生成函数)
  4. 题解【51nod 1290 Counting Diff Pairs】
  5. 省选专练之后缀自动机zoj1729 Hidden Password
  6. 洛谷 P2804 神秘数字
  7. servlet 与 tomcat版本不匹配的问题
  8. Answers To The Questions from GiGabyte
  9. 拓端tecdat|R语言结构方程模型SEM分析心理学和营销研究数据路径图可视化
  10. 拓端tecdat|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病