WStanley
@WStanley
Back-end Developer

Как через input загрузить картинку в cropper?

Пытаюсь компонент сделать с библиотекой cropperjs.
Если передаю ссылку на картинку через props, то все работает, но мне надо загрузить ее при выборе через input.
Почему не получается? Картинка появляется, но без кроппера.

<!-- Загрузка картинки в админке пользователя -->
<template>
<div class="card-body">
    <div class="form-group">
        <label>Загрузите свою картинку</label>
        <input type="file" @change="selectFile">
    </div>
    <div class="row">
        <div class="col-md-12">
            <img :src="src" ref="image">
        </div>
    </div>
</div>
</template>


<script>
import Cropper from 'cropperjs';
export default {
    props: {
        ssrc: String
    },
    data() {
        return {
            src: '',
            image: {},
            cropper: {},
            destination: {}
        }
    },
    mounted() {},
    methods: {
        selectFile(event) {
            let file = (event.target.files || event.dataTransfer.files)[0];
            if (file) {
                let reader = new FileReader();
                reader.onload = (event) => { this.src = event.target.result };
                reader.readAsDataURL(file);
            }
            this.image = this.$refs.image;

            this.cropper = new Cropper(this.image, {
                zoomable: false,
                scalable: false,
                aspectRatio: 1
            });

            console.log(this.cropper)
        }
    }
}
</script>
  • Вопрос задан
  • 429 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
mounted() {
  this.cropper = new Cropper(this.$refs.image, {
    zoomable: false,
    scalable: false,
    aspectRatio: 1,
  });
},
methods: {
  selectFile(e) {
    const file = (e.target.files || e.dataTransfer.files)[0];
    if (file) {
      const reader = new FileReader();
      reader.onload = e => this.cropper.replace(e.target.result);
      reader.readAsDataURL(file);
    }
  },
},
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы