首页 > 编程语言 >JavaScript中的文件

JavaScript中的文件

时间:2024-10-23 16:53:04浏览次数:1  
标签:文件 canvas drawWidth image JavaScript height width let

裁剪图片

原理:借助Canvas, 绘制圆形路径,裁剪,填充图片

/**
 * @description: 裁剪图片变为圆形
 * @return {Promise}
 * @param {String} url:普通路径
 */
export const clipImageUrl = (url) => {
    return new Promise((resolve, reject) => {
        let image = new Image();
        image.onload = function () {
            let width = image.width;
            let height = image.height;
            const minLength = Math.min(width, height);
            let canvas = document.createElement("canvas");
            let ctx = canvas.getContext("2d");
            canvas.width = minLength;
            canvas.height = minLength;
            // 计算图片绘制区域,确保图片保持比例
            const aspectRatio = image.width / image.height;
            let drawWidth, drawHeight;
            let offsetX = 0, offsetY = 0;

            if (aspectRatio > 1) {
                // 图片更宽
                drawHeight = canvas.height;
                drawWidth = drawHeight * aspectRatio;
                offsetX = (canvas.width - drawWidth) / 2;
            } else {
                // 图片更高
                drawWidth = canvas.width;
                drawHeight = drawWidth / aspectRatio;
                offsetY = (canvas.height - drawHeight) / 2;
            }

            // 将画布剪裁为圆形区域
            ctx.beginPath();
            ctx.arc(canvas.width / 2, canvas.height / 2, canvas.width / 2, 0, Math.PI * 2);
            ctx.closePath();
			// 剪切,【一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内(不能访问画布上的其他区域)】
            ctx.clip();

            // 在剪裁后的圆形区域内绘制图片
            ctx.drawImage(image, offsetX, offsetY, drawWidth, drawHeight);
            let newImage = new Image();
            newImage.src = canvas.toDataURL('image/png')
            return resolve(newImage.src);
        }
        image.src = url;
    })
}

标签:文件,canvas,drawWidth,image,JavaScript,height,width,let
From: https://www.cnblogs.com/zxn-114477/p/18497734

相关文章

  • wsl ubuntu20.04设置core文件生成路径
    1.首先要确定允许生成core文件#在终端执行下列命令,执行后仅本次会话有效,如需每次都生效,可以添加到~/.bashrc文件中ulimit-cunlimited2.查看core文件的生成目录cat/proc/sys/kernel/core_pattern3.临时设置core文件的生成目录#先切换到root用户,然后输入,其中./表示生......
  • 054 非单文件组件
    ......
  • Javascript数据类型及转换
    Javascript代码引入方式同HTML相似分为行内式、内嵌式、外链式    1.行内式:行内式是将JavaScript代码作为HTML标签的属性值使用。<ahref="javascript:alert('Hello');">test</a>代码杂乱容易混淆不推荐    2.嵌入式:也称为内嵌式,使用<script>标签包......
  • Windows基础(一):常识、术语、文件夹
      本文简要介绍了Windows的基本常识、基本概念以及重要的文件及目录。基本常识在windows操作系统家族中,system.ini和win.ini这两个文件包含了操作系统所有的控制功能和应用程序的信息,system.ini管理计算机硬件而win.ini管理桌面和应用程序。后来,注册表取代了这两个文件的......
  • Chromium127编译指南 Windows篇 - 使用 GN 工具生成构建文件(六)
    前言在上一篇文章中,我们已经成功获取了Chromium的源代码并同步了相关的第三方依赖。本文将继续深入,指导您如何使用GN工具生成构建文件,为接下来的编译工作奠定基础。切换Chromium版本至127在开始正式构建之前,我们需要将版本切换至127,这里我们使用git的切出功能创建新分支......
  • 关于项目引用onlyoffice作为在线office文件预览与编辑的笔记(二)
    基于上一篇中已经创建了onlyoffice容器,所以该篇讲述如何升级容器配置1.修改onlyoffice20并发限制方案一进入容器修改六个app.js文件find./-nameapp.js目录下所有app.js文件,对代码行进行修改,只是经过简单的测试,希望发现问题及时回复。(this._state.licenseType=e),/......
  • KnowDLLs 是一个工具,旨在帮助用户识别和管理系统中的动态链接库(DLL)文件。它可以用于检
    WinObj是一个用于查看和分析Windows操作系统对象和对象命名空间的工具,主要用于系统调试和安全分析。它可以帮助用户了解系统中的各种对象,包括文件、进程和注册表项。KnowDLLs则是一个具体的工具,旨在识别和管理系统中的动态链接库(DLL),帮助用户检测潜在的恶意或不必要的DLL文件......
  • 关于项目引用onlyoffice作为在线office文件预览与编辑的笔记(一)
    由于自己项目已采用该方案,故此记录一下过程一初始安装拉取5.4.2.46版本onlyoffice/documentserver镜像dockerpullonlyoffice/documentserver:5.4.2.46该版本是支持20个连接数破解限制的最后一个版本,也是对中文字体界面显示中文不乱码支持比较好的一个版本。创建容器创建......
  • afcore.dll文件丢失影响Omega Strikers运行?Omega Strikers玩家必看afcore.dll文件丢失
    在沉浸于OmegaStrikers这款快节奏、竞技性强的游戏时,突然遭遇afcore.dll文件丢失的问题,无疑会给玩家带来不小的困扰。这一关键文件的缺失,可能导致游戏无法正常启动、运行卡顿,甚至频繁崩溃,严重影响游戏体验。然而,面对这一挑战,玩家无需过度焦虑,因为通过一系列自救措施,你完全有能......
  • 《坚守阵地2》遇到steamclient.dll缺失?解决《坚守阵地2》中steamclient.dll文件缺失详
    当《坚守阵地2》遇到steamclient.dll缺失的问题时,可以尝试以下详细的修复步骤来解决:一、验证游戏文件完整性打开Steam客户端。在游戏库中找到《坚守阵地2》。右键点击游戏图标,选择“属性”。在“本地文件”选项卡中,点击“验证游戏文件的完整性”。等待Steam检查并修复游戏文......