翼度科技»论坛 编程开发 JavaScript 查看内容

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

3

主题

3

帖子

9

积分

新手上路

Rank: 1

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

  7. </head>
  8. <body>
  9.     <canvas id="canvas" ></canvas>
  10.     <img id="sourceImage" src="YOUR URL" style="display: none;">

  11.     <script>
  12.         // var canvas = new fabric.Canvas('canvas');
  13.         var canvas = new fabric.StaticCanvas("canvas");
  14.         var sourceImage = document.getElementById('sourceImage');
  15.         //截图位置
  16.         const cropXywh = [821,3799,97,90]
  17.         fabric.Image.fromURL(sourceImage.src, function(img) {
  18.             canvas.add(img);
  19.             var text = new fabric.Text('这里是文本描述', {
  20.                 left: 0,
  21.                 top: 0,
  22.                 fontSize: 16,
  23.                 fill: 'red'
  24.             });
  25.             var textWidth = text.width; // 获取文本的宽度
  26.             var textHeight = text.height; // 获取文本的高度
  27.             img.set({
  28.                 left: 0,
  29.                 top: textHeight,
  30.                 width: cropXywh[2],
  31.                 height: cropXywh[3],
  32.                 cropX: cropXywh[0], // 裁剪区域左上角x坐标
  33.                 cropY: cropXywh[1], // 裁剪区域左上角y坐标
  34.                 cropWidth: cropXywh[2], // 裁剪区域宽度
  35.                 cropHeight: cropXywh[3] // 裁剪区域高度
  36.             });
  37.             
  38.            
  39.             let widths = [cropXywh[2],textWidth];
  40.             let maxWidth = Math.max(...widths);
  41.             let maxHeight = cropXywh[3]+textHeight;
  42.             canvas.setWidth(maxWidth);
  43.             canvas.setHeight(maxHeight);
  44.             canvas.add(text);
  45.             canvas.renderAll(); // 更新Canvas
  46.             //若使用elementui可以显示局部图放大效果
  47.             //let imgData = canvas.toDataURL({ format: "png", quality: 0.8 });
  48.             // imageData.value = [imgData]
  49.             // showImageViewer.value = true
  50.         });
  51.     </script>
  52. </body>
  53. </html>
复制代码
效果图:

大图预览局部图
再结合el-image-viewer可以实现大图预览局部图的效果。

示例代码
  1. // 图片预览
  2.       <el-image-viewer
  3.         style="z-index:1500"
  4.         v-if="showImageViewer"
  5.         @close="()=>{showImageViewer = false}"
  6.         :url-list="imageData"
  7.       >
复制代码
  1. onMounted(() => {
  2.       // 通过遮罩层关闭图片预览
  3.     document.addEventListener('click',function(e){
  4.         if(e.target.className=="el-image-viewer__mask"){
  5.             let close = document.querySelector(".el-image-viewer__close");
  6.             if(close){
  7.               close.click();
  8.               showImageViewer.value = false
  9.             }else{
  10.              close = document.querySelector(".el-icon-circle-close");
  11.               if(close){
  12.                 close.click();
  13.                 showImageViewer.value = false
  14.               }
  15.             }
  16.         }
  17.     });
  18. });
复制代码
到此这篇关于Vue使用fabric.js实现局部截图与大图预览功能的文章就介绍到这了,更多相关Vue fabric局部截图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/javascript/316159tx3.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具