• vue上传图片编辑


    <template>
    <div>
    <el-form>
    <el-upload
    action="/raptorBrokerServer/service/resold/listHousing/upload/upload.do"
    list-type="picture-card"
    name="picture"
    :multiple="true"
    :on-preview="handlePictureCardPreview"
    :on-remove="handleRemove">
    <i class="el-icon-plus"></i>
    </el-upload>
    </el-form>
    <el-dialog :visible.sync="dialogVisible" @opened="imageDialogOpened" @close="imageDialogClose" :fullscreen="true">
    <el-row>
    <el-col :span="16">
    <img id="image" :src="dialogImageUrl" height="360" width="100%"/>
    <el-row style="margin-top:10px;">
    <el-button type="primary" icon="el-icon-zoom-in" @click="cropZoomIn"></el-button>
    <el-button type="primary" icon="el-icon-zoom-out" @click="cropZoomOut"></el-button>
    <el-button type="success" icon="el-icon-check" @click="cropCut"></el-button>
    <el-button type="success" icon="el-icon-refresh" @click="cropRest"></el-button>
    </el-row>
    </el-col>
    <el-col :span="8">
    <div class="preview-box-parcel">
    <div class="square previewImg"></div>
    </div>
    </el-col>
    </el-row>
    </el-dialog>
    </div>
    </template>

    <style>
    @import "../../../static/plugins/cropperjs/cropper.min.css";
    @import "../../../static/plugins/cropperjs/imgCropping.css";
    </style>

    <script>
    import $ from "jquery";
    import Cropper from "cropperjs";

    export default {
    data() {
    return {
    dialogImageUrl: "",
    dialogVisible: false,
    cropper: null,
    croppable: false,
    imgCropperData: {
    accept: "image/gif, image/jpeg, image/png, image/jpg"
    }
    };
    },
    mounted() {},
    methods: {
    handleRemove(file, fileList) {
    console.log(file, fileList);
    },
    handlePictureCardPreview(file) {
    this.dialogImageUrl = file.url;
    this.dialogVisible = true;
    },
    imageDialogOpened() {
    //初始化这个裁剪框
    let self = this;
    let image = document.getElementById("image");
    let previews = document.querySelectorAll(".preview");
    this.cropper = new Cropper(image, {
    aspectRatio: 649 / 500,
    cropBoxResizable: false,
    viewMode: 1,
    background: false,
    zoomable: true,
    wheelZoomRatio: 0,
    preview: $(".previewImg"),
    ready: function() {
    self.croppable = true;
    },
    crop: function(event) {
    let data = event.detail;
    let cropper = this.cropper;
    let imageData = cropper.getImageData();
    }
    });
    },
    imageDialogClose() {
    this.cropper.destroy();
    },
    cropRest() {
    this.cropper.reset();
    },
    cropZoomIn() {
    this.cropper.zoom(0.1);
    },
    cropZoomOut() {
    this.cropper.zoom(-0.1);
    },
    cropCut() {
    let cas = this.cropper.getCroppedCanvas();// 获取被裁剪后的canvas
    let base64 = cas.toDataURL('image/jpeg'); // 转换为base64
    this.uploadCrop(base64);
    },
    uploadCrop(imageData) {
    this.$axios({
    method: "post",
    headers: {
    "Content-Type": "application/json"
    },
    url: "/raptorBrokerServer/service/resold/listHousing/upload/uploadCrop.do",
    data: { imageData: imageData }
    })
    .then(response => {
    if (response.data.success) {
    alert("1");
    } else {
    }
    })
    .catch(error => {
    console.log(error);
    });
    }
    }
    };
    </script>

  • 相关阅读:
    崩漏
    李翰卿治疗小儿五更咳嗽经验
    34名国宝级名老中医秘方集锦(一)
    黄煌儿科经方
    中医临床参考
    HTML 动态云启动画面
    CANVAS 水波动态背景
    PHP MYSQL单向同步方案
    PHP 获取指定目录下所有文件(包含子目录)
    JS 深度拷贝 Object Array
  • 原文地址:https://www.cnblogs.com/lhqdbk/p/13332367.html
Copyright © 2020-2023  润新知