我的名字叫馆陶 发表于 2024-2-27 14:50:11

Vue使用fabric.js实现局部截图与大图预览功能

使用fabric.js裁剪和显示图片
示例代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>使用fabric.js裁剪和显示图片</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/4.5.0/fabric.min.js"></script>

</head>
<body>
    <canvas id="canvas" ></canvas>
    <img id="sourceImage" src="YOUR URL" style="display: none;">

    <script>
      // var canvas = new fabric.Canvas('canvas');
      var canvas = new fabric.StaticCanvas("canvas");
      var sourceImage = document.getElementById('sourceImage');
      //截图位置
      const cropXywh =
      fabric.Image.fromURL(sourceImage.src, function(img) {
            canvas.add(img);
            var text = new fabric.Text('这里是文本描述', {
                left: 0,
                top: 0,
                fontSize: 16,
                fill: 'red'
            });
            var textWidth = text.width; // 获取文本的宽度
            var textHeight = text.height; // 获取文本的高度
            img.set({
                left: 0,
                top: textHeight,
                width: cropXywh,
                height: cropXywh,
                cropX: cropXywh, // 裁剪区域左上角x坐标
                cropY: cropXywh, // 裁剪区域左上角y坐标
                cropWidth: cropXywh, // 裁剪区域宽度
                cropHeight: cropXywh // 裁剪区域高度
            });
            
         
            let widths = ,textWidth];
            let maxWidth = Math.max(...widths);
            let maxHeight = cropXywh+textHeight;
            canvas.setWidth(maxWidth);
            canvas.setHeight(maxHeight);
            canvas.add(text);
            canvas.renderAll(); // 更新Canvas
            //若使用elementui可以显示局部图放大效果
            //let imgData = canvas.toDataURL({ format: "png", quality: 0.8 });
            // imageData.value =
            // showImageViewer.value = true
      });
    </script>
</body>
</html>效果图:

大图预览局部图
再结合el-image-viewer可以实现大图预览局部图的效果。
https://img.jbzj.com/file_images/article/202402/2024022216581728.png
示例代码
// 图片预览
      <el-image-viewer
      style="z-index:1500"
      v-if="showImageViewer"
      @close="()=>{showImageViewer = false}"
      :url-list="imageData"
      >onMounted(() => {
      // 通过遮罩层关闭图片预览
    document.addEventListener('click',function(e){
      if(e.target.className=="el-image-viewer__mask"){
            let close = document.querySelector(".el-image-viewer__close");
            if(close){
            close.click();
            showImageViewer.value = false
            }else{
             close = document.querySelector(".el-icon-circle-close");
            if(close){
                close.click();
                showImageViewer.value = false
            }
            }
      }
    });
});到此这篇关于Vue使用fabric.js实现局部截图与大图预览功能的文章就介绍到这了,更多相关Vue fabric局部截图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/javascript/316159tx3.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Vue使用fabric.js实现局部截图与大图预览功能