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

【第4章 图像与视频】4.1 图像的绘制

文章目录

  • 前言
  • 在 Canvas 之中绘制图像
  • drawImage() 方法的用法


前言

drawImage() 方法可以将一幅图像的整体或某个部分绘制到 canvas 内的任何位置上,并且允许开发者在绘制过程中对图像进行缩放。也可以将图像绘制在离屏 canvas 中,这样的话就可以对图像进行一些有技巧性地处理了,例如实现图像查看器。


在 Canvas 之中绘制图像

应用程序首先创建了一幅图像,设置了它的数据源,然后等待浏览器加载图片,在图片加载完成后,将其绘制与 canvas 的左上角。

这就是 drawImage() 最简单的用法了。采用这种方式,可以把一整张未经缩放的图形绘制在 canvas 中,该方式的唯一缺点则是你必须等待图像加载完毕后才能对其进行绘制。如果在图像尚未完成加载时就进行绘制,那么根据 Canvas 规范,drawImage() 方法会执行失败,而且没有任何提示。

在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>4-1-图像的绘制</title><style>body {background: #eeeeee;}#canvas {background: #ffffff;margin-top: 5px;margin-left: 10px;}</style></head><body><canvas id="canvas" width="800" height="600"></canvas><script>const canvas = document.getElementById('canvas'),context = canvas.getContext('2d'),image = new Image()image.src = './waterfall.png'image.onload = () => {context.drawImage(image, 0, 0)}</script></body>
</html>

drawImage() 方法的用法

drawImage() 方法会将一幅图像绘制到一个 canvas之中,所绘的图像叫做“源图像”(source image),而绘制到的地方则叫做“目标canvas”(destination canvas)。这里的image参数可以是 HTMLImageElement 对象、HTMLCanvasElement 对象、HTMLVideoElement 对象。

drawImage() 方法可以接受以下3套参数:

第一种用法,会将整幅图像原样绘制在目标 canvas 中的指定位置上。

drawImage(image, dx, dy)

第二种用法,会将图像完整地绘制到指定的位置上,然而,在绘制时会根据目标区域的宽度与高度进行缩放

drawImage(image, dx, dy, dWidth, dHeight)

第三种用法,可以将整幅图像或其一部分绘制到目标 canvas 的指定位置上,而且在绘制时会根据目标区域的宽度和高度对图像进行缩放

drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)

在这里插入图片描述


相关文章:

  • 【第4章 图像与视频】4.6 结合剪辑区域来绘制图像
  • 语法糖介绍(C++ Python)
  • Yum配置第三方源与本地源详解
  • Java-代码段-http接口调用自身服务中的其他http接口(mock)-并建立socket连接发送和接收报文实例
  • 练习小项目9:打字效果文字展示(多段文字循环+删除+光标闪烁)
  • 嵌入式学习笔记 - freeRTOS同优先级任务时间片抢占的实现
  • 酒店管理破局:AI 引领智能化转型
  • hf-mirror断点续传下载权重
  • (6)-Fiddler抓包-Fiddler状态面板详解
  • Java面试:从Spring Boot到分布式系统的技术探讨
  • SCL语言两台电机正反转控制程序从选型、安装到调试全过程的详细步骤指南(下)
  • 目标检测预测框置信度(Confidence Score)计算方式
  • 一文清晰理解目标检测指标计算
  • 深入分析SD-WAN成本效益和ROI(投资回报率):真的能降低WAN成本吗?
  • Spring Boot+Activiti7入坑指南初阶版
  • HbuilderX设置禁止import 引入模块换行
  • HOW - 简历和求职面试宝典(七)
  • spring的多语言怎么实现?
  • [解决]在 Vue 3 使用 Vite 开发的项目中,放在 public 文件夹里的文件,在打包部署后出现 404 的问题
  • Linux `|` 管道符与 `grep` 命令深度解析与高阶应用指南
  • 建美食网站有哪些原因/系统优化的例子
  • 外贸网站用什么字体/百度关键词购买
  • 石排镇仿做网站/网络引流怎么做啊?
  • 在58同城做网站有生意吗/百度地图客服人工电话
  • 杭州网站建设nuoweb/代运营公司排行榜
  • 赌博网站是怎么做的/b站不收费网站