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

【第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)

在这里插入图片描述


http://www.lryc.cn/news/2397673.html

相关文章:

  • 苹果应用开发详细教程(2025最新版)
  • G25-05-31Rust开源项目日报 Top10
  • 2025年主流编程语言全面分析与学习指南
  • window安装nginx
  • ArcGIS Pro裁剪影像
  • [智能算法]蚁群算法原理与TSP问题示例
  • Vue-4-前端框架Vue基础入门之Vue的常用操作
  • ubuntu国内镜像源手动配置
  • 21-CS61B-lab6:java文件操作以及持久化一见
  • ⚡️ Linux 系统安装与配置 Git
  • SpringBoot 自动装配原理深度解析:从源码到实践
  • 【Go语言】Fyne GUI 库使用指南 (面向有经验开发者)
  • Nginx Lua模块(OpenResty)实战:动态化、智能化你的Nginx,实现复杂Web逻辑 (2025)
  • openssl 怎么生成吊销列表
  • Go语言包的组织与导入 -《Go语言实战指南》
  • springboot-响应接收与ioc容器控制反转、Di依赖注入
  • CSP使用严格设置
  • Spring代理工厂类ProxyFactory作用以及实现原理
  • SpringBoot使用MQTT协议简述
  • 【GraphQL】深入解析 Apollo Client:从架构到实践的一站式 GraphQL 解决方案
  • 集成电路制造设备防震基座选型指南:为稳定护航-江苏泊苏系统集成有限公司
  • 华为OD机试真题——阿里巴巴找黄金宝箱(II)(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • Vue中 toRaw 和 markRaw 的使用
  • 探索DeepSeek提示词:关键策略与实用场景
  • 海底三维可视化平台
  • Elasticsearch 读写流程深度解析
  • AIoT赋能场馆数字化转型:智能管理新生态
  • 1、Pytorch介绍与安装
  • 【从零开始学习QT】Qt 概述
  • 家庭路由器改装,搭建openwrt旁路由以及手机存储服务器,实现外网节点转发、内网穿透、远程存储、接入满血DeepSeek方案