首页 > 其他分享 > 自适应图片上的小图片缩放时等比例缩减

自适应图片上的小图片缩放时等比例缩减

时间:2022-09-22 15:45:59浏览次数:57  
标签:缩放 image height width 缩减 left top 图片

用到fiex弹性布局

效果:缩放时小黄圆点也跟着一起缩放

 

 

 代码结构:

 <!-- 灰色背景 -->
  <div class="boxImg"
       ref="cont"
       style="position: absolute; top: 0; left: 0">
    <!-- 综合监控首页 -->
    <img class="topImg"
         src="./images/images/monitor.title.bg.png"
         alt="">
    <div>

      <!-- 原图 -->
      <img class="contImg"
           src="./images/images/factory.plan.png"
           alt=""
           ref="conten">
      <!-- 小圆点 -->
      <img class="Point-one"
           src="./images/images/monitor.state.w.png"
           ref="one"
           v-for="item in itme"
           :key="item.x" />
    </div>
  </div>

javascript部分:

export default {
  data () {
    return {
      // 圆点的数量
      itme: [
        {
          // left值
          x: 560,
          // top值 
          y: 600,
        },
        {
          // left值
          x: 624,
          // top值 
          y: 595,
        },
        {
          // left值
          x: 692,
          // top值 
          y: 595,
        },
        {
          // left值
          x: 555,
          // top值 
          y: 670,
        },
        {
          // left值
          x: 618,
          // top值 
          y: 680,
        },
        {
          // left值
          x: 689,
          // top值 
          y: 670,
        },
      ],
    }
  },
  mounted () {
    window.addEventListener("resize", () => {
      this.updateScaleRatio(
        this.$refs.conten,
        // 屏幕显示的宽度
        window.innerWidth,
        // 屏幕显示的高度
        window.innerHeight
      );
    });
    this.updateScaleRatio(
      this.$refs.conten,
      // 屏幕显示的宽度
      window.innerWidth,
      // 屏幕显示高度
      window.innerHeight
    )
  },
  methods: {
    updateScaleRatio (ImgObj, maxWidth, maxHeight) {
      var image = new Image();
      //原图片原始地址(用于获取原图片的真实宽高,当<img>标签指定了宽、高时不受影响)
      image.src = ImgObj.src;
      // 用于设定图片的宽度和高度
      var tempWidth;
      var tempHeight;

      if (image.width > 0 && image.height > 0) {
        //原图片宽高比例 大于 指定的宽高比例,这就说明了原图片的宽度必然 > 高度
        if (image.width / image.height >= maxWidth / maxHeight) {
          if (image.width > maxWidth) {
            tempWidth = maxWidth;
            // 按原图片的比例进行缩放
            tempHeight = (image.height * maxWidth) / image.width;
          } else {
            // 按原图片的大小进行缩放
            tempWidth = image.width;
            tempHeight = image.height;
          }
        } else {
          // 原图片的高度必然 > 宽度
          if (image.height > maxHeight) {
            tempHeight = maxHeight;
            // 按原图片的比例进行缩放
            tempWidth = (image.width * maxHeight) / image.height;
          } else {
            // 按原图片的大小进行缩放

            tempWidth = image.width;
            tempHeight = image.height;
          }
        }
        // 设置页面图片的宽和高
        ImgObj.height = tempHeight;
        ImgObj.width = tempWidth;
        // 提示图片的原来大小
        ImgObj.alt = image.width + "x" + image.height;
      }
      // <!-- 下面代码是等比例缩放的时候小圆点跟着移动,若不需要删除即可-->
      // 获取所有点位
      let point = this.$refs.one;
      // 循环判断点位的位置
      this.itme.forEach((itme, index) => {
        // x 除以 图片最大宽度
        let left = itme.x / 1708;
        // y 除以 图片最大的高度
        let top = itme.y / 961;
        // 小圆点的缩放比例 屏幕除以1920
        let w = maxWidth / 1920;
        // this.$refs.one.width = 18 * w;
        // 小圆点基准值乘以小圆点的缩放比
        point[index].width = 18 * w;
        // 获取每一个点位
        let pointPosition = point[index];
        // 让图片的宽度乘以比例
        pointPosition.style.left = ImgObj.width * left + "px";
        // 让图片的高度乘以比例
        pointPosition.style.top = ImgObj.height * top + "px";
      });
    },
  }
}

样式部分:

/* 灰色背景 */
.boxImg {
  background-image: url('./images/images/map.bg.jpeg');
  width: 100%;
  height: 99.5%;
  display: flex;
  justify-content: center;
  flex-direction: column;
  align-items: center;
}
.boxImg div {
  position: relative;
}
/* 小黄圆点 */
.Point-one {
  position: absolute;
  left: 630px;
  top: 670px;
}
/* 综合监控首页 */
.topImg {
  position: absolute;
  top: 0;
  width: 100vw;
  z-index: 1111;
}

 

标签:缩放,image,height,width,缩减,left,top,图片
From: https://www.cnblogs.com/0722tian/p/16719530.html

相关文章

  • fabric image 替换图片
    在之前的基础上调整部分代码,实现上传图片后的替换图片,及可以直接上传替换图片首先需要上传一张图片,后续操作的前提都需要canvas中有选中的image对象: 之后可以点击......
  • 在线直播系统源码,canvas 生成图片模糊
    在线直播系统源码,canvas生成图片模糊关于canvas的一些基础知识 canvas绘制的是位图canvas的width和height属性 canvas的width和height属性与style的width,height......
  • Windows图片查看器丢失
    图片默认打开方式没有Windows图片查看器解决方法:1)打开注册表:运行-->输入:regedit;2)打开如下路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsPhotoV......
  • PS---给图片加水印
    最近在给客户整理需求文档,以及功能流程图,导出图片后,需要给图片加水印,下面是详细方法:第一步:制作水印模板1、新建图层,输入水印文字,调整颜色和字体,倾斜即可。2、将个图层设......
  • 通过Webbrowse获取页面的图片并下载
    代码参考连接:https://bbs.huaweicloud.com/blogs/307065#:~:text=C%23网络编程之webBrowser获取网页url和下载网页中图片1一.界面设计界面设计如下图所示%2C添加控件......
  • 终端连接神器Tabby及背景图片设置方法
    part1对于终端连接工具,最开始用的xshell破解版(需要破解,无法更新,xftp独立安装),后来用的MobaXterm(启动和反应比较慢,传文件不好用),直到最近在github发现了一款......
  • vue 中利用js完成等比例缩放图片和点位跟着移动
    需要等比例缩放的内容html<divclass="boxImg"ref="cont"style="position:absolute;top:0;left:0"><!--这里放上需要等比例缩放的内容--></div>在vue......
  • 图片防盗链
    如何避免别的网站直接通过本网站的url访问本网站资源简单的防盗我可以做到请求来的时候先看看当前请求是从哪个网站过来的如果是本网站那么正常访问如果是其他网站直接......
  • uni-app 获取图片验证码
      <image:src="imgVerificationCode"@click="getVerificationCode"class="imageCode"></image>arrayBufferToBase64(buffer){ varbinary=''; ......
  • node.js实现图片上传功能
    1、下载第三方插件multernpminstallmulter--save2、先写一个上传图片的接口在路由文件夹中创建一个fileTest.js文件,代码如下://此文件用于:编写图片上传功能//......