前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图片旋转后保存到数据库

图片旋转后保存到数据库

作者头像
tianyawhl
发布2024-04-30 08:21:56
980
发布2024-04-30 08:21:56
举报
文章被收录于专栏:前端之攻略前端之攻略

开源中国 APP,启动!这是你从没见过的全新版本”

1、图片通过canvas绘制

2、canvas旋转

3、canvas 转成blob 在实例化成文件

4、创建formData里面append放入文件和其他的参数,再调上传接口

代码语言:javascript
复制
  <div
    style="
      height: 600px;
      display: flex;
      justify-content: center;
      align-items: center;
    "
    id="canvasWrap"
  >
    <!-- <img width="100%" :src="dialogImageUrl" alt="" > -->
    <canvas id="picCanvas"></canvas>
  </div>
  <div>
    <el-button size="medium" type="primary" @click="operateRotate">
      旋转
    </el-button>
  </div>
代码语言:javascript
复制
    rotate(){
      var img = new Image();
      img.setAttribute("crossOrigin",'anonymous')
      this.img = img
      img.src = this.dialogImageUrl;
      img.onload = ()=>{
        console.log("rotate")
        console.log(img.width)
        console.log(img.height)
        let maxSide = Math.max(img.width,img.height)
        
        let canvas = document.getElementById("picCanvas")
        this.canvas = canvas
        let canvasWrap = document.getElementById("canvasWrap")
        canvasWrap.appendChild(this.canvas)
        // var canvas = document.createElement('canvas');
        this.ctx = canvas.getContext("2d")
        canvas.width = maxSide
        canvas.height = maxSide
        // 旋转并绘制图片
        this.ctx.translate(maxSide/2,maxSide/2)
        this.ctx.drawImage(img,-img.width/2,-img.height/2)
      }

    },
    operateRotate(){
      let img = this.img
      // img.crossOrigin = "Anonymous"
      // img.setAttribute("crossOrigin",'anonymous')

      let ctx = this.ctx
      let canvas = this.canvas
      console.log(canvas.width)
      console.log(canvas.height)

      ctx.clearRect(-canvas.width/2,-canvas.height/2,canvas.width,canvas.height)
      ctx.rotate(Math.PI / 2)
      ctx.drawImage(img,-img.width/2,-img.height/2)
      // var base64ImageData = canvas.toDataURL('image/jpeg')
      // let blob = dataURItoBlob(base64ImageData);
      // var file = new File([blob],'testPic.jpeg ',{ type: 'image/jpeg' })
      canvas.toBlob(blob=>{
        var file = new File([blob],'testPic.png',{ type: 'image/png' })
        console.log(file)
        let formData = new FormData();
        formData.append("file", file);
        formData.append(
          "userId",
          JSON.parse(sessionStorage.getItem("userInfo")).userCode
        );
        this.$axios.post("upload", formData).then(res => {
          console.log(res.data);
          if (res.data.errorCode == "00000") {
           
          }
        
        });
      })
    },
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档