javascript - 调整图像大小并保持叠加位置
问题描述
我正在调整 Javascript 中的图像大小,以使图像以其正确的纵横比填充父容器。在该图像之上,我有需要以特定坐标覆盖在图像上的项目。
- 原图尺寸为:654px X 418px
- 在该图像的顶部,我在精确坐标处覆盖了一些其他画布项目,56px X 82px
- 我调整图像大小,保持正确的纵横比为 1.56
- 图像容器也可以缩放:1672px X 829px
- 具有正确纵横比的新图像尺寸:1297px X 829px
- 我如何计算新的画布覆盖坐标在哪里?
解决方案
您可以使用图像元素的属性来确定要应用于覆盖项的缩放因子。
图像的内在(未缩放)尺寸是:
const unscaledWidth = img.naturalWidth,
unscaledHeight = img.naturalHeight;
绘制的图像尺寸为:
const scaledWidth = img.offsetWidth,
scaledHeight = img.offsetHeight;
因此,比例因子为:
const scaleX = scaledWidth / unscaledWidth,
scaleY = scaledHeight / unscaledHeight;
参考:
推荐阅读
- javascript - Vue 不显示使用 v-for 创建的初始元素,直到按钮被切换
- python - 如何创建检查消息的命令 (Discord.py)
- reactjs - 第一次使用 webSocket(在 React 中),我得到“失败:连接建立错误:net::ERR_NAME_NOT_RESOLVED
- tkinter - Tkinter 背景图像未显示在新窗口中
- python-3.x - 获取每个 id 的所有列,其中列等于一个值
- java - 在 java 中使用 s3 事件手动调用 lambda
- html - 无法通过 XPath 选择 html td 链接按钮
- r - 如果不等于两个条件(在 R 中),则替换向量中的值
- html - 强制 div 匹配父母的身高,不包括自己
- swift - 如何使用 uistepper 从 segue 数据传输中乘以值