木卯彳亍 2023-05-31 09:25 采纳率: 33.3%
浏览 40
已结题

测试代码(不需要回答)

img

img


createImg(canvasValue) {
      let wholeImg = null;
      // 初始化裁剪框
      function setupCropper() {
        // 创建一个 Cropper 实例
        wholeImg = new Cropper(canvas, {
          autoCrop: true,
          aspectRatio: 9 / 16,
          viewMode: 0.8,
          dragMode: "none",
          initialAspectRatio: 1,
          preview: "",
          background: false,
          autoCropArea: 1,
          zoomOnWheel: true
        });
        // 等待一段时间确保裁剪框初始化完成
        setTimeout(() => {
          // 设置裁剪框默认向左移动
          const cropBoxData = wholeImg.getCropBoxData();
          const offsetX = 300; // 根据需要调整偏移量
          const newCropBoxData = {
            ...cropBoxData,
            left: cropBoxData.left - offsetX,
            right: cropBoxData.right - offsetX
          };
          wholeImg.setCropBoxData(newCropBoxData);
        }, 100);
      }
      // 检查裁剪操作是否完成
      function checkCropCompletion() {
        const cropBoxData = wholeImg.getCropBoxData();
        const imageData = wholeImg.getImageData();
        const isCropComplete =
          cropBoxData.width !== imageData.width ||
          cropBoxData.height !== imageData.height;
        if (isCropComplete) {
          // 裁剪操作已完成,可以获取裁剪后的 Canvas
          const croppedCanvas = wholeImg.getCroppedCanvas();
          croppedCanvas.toBlob(blob => {
            const downloadLink = document.createElement("a");
            downloadLink.href = URL.createObjectURL(blob);
            downloadLink.download = "cropped_image.png";
            downloadLink.click();
          }, "image/png");
        } else {
          // 裁剪操作未完成,继续检查
          setTimeout(checkCropCompletion, 100);
        }
      }
      // 创建一个新的 Canvas 用于裁剪
      const canvas = document.createElement("canvas");
      const canvasDom = canvasValue;
      const container = canvasDom.parentElement;
      const width = canvasDom.offsetWidth;
      const height = canvasDom.offsetHeight;
      const scale = 0.5;
      canvas.width = width * scale;
      canvas.height = height * scale;
      // 设置 html2canvas 的配置项
      const options = {
        backgroundColor: "#fff",
        canvas: canvas,
        useCORS: true,
        scale: scale,
        width: width,
        height: height,
        background: "#fff",
        allowTaint: true
      };
      // 将原始 Canvas 绘制到新的 Canvas 上
      html2canvas(canvasDom, options).then(canvas => {
        const imageContainer = this.$refs.image_container;
        canvas.style.display = "none";
        container.appendChild(canvas);
        setTimeout(() => {
          // 替换原始 Canvas
          canvasDom.replaceChild(canvas, imageContainer);
          canvas.style.display = "block";
          // 初始化裁剪框
          setupCropper();
          // 检查裁剪操作是否完成
          checkCropCompletion();
        }, 0);
      });
    },
  • 写回答

1条回答 默认 最新

  • 白云苍狗い 2023-05-31 09:52
    关注

    好的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月31日
  • 已采纳回答 5月31日
  • 创建了问题 5月31日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大