Cropper 
Preview and crop image
Usage 
Simple Usage 

vue
<template>
  <p-cropper src="./assets/sample-1.jpg" />
</template>Crop Size 
You can adjust crop size using width, height or ratio.
Using width and height 

vue
<template>
  <p-cropper src="./assets/sample-1.jpg" width="500" height="200" />
</template>Using Ratio 

vue
<template>
  <p-cropper src="./assets/sample-1.jpg" :ratio="16/9" />
</template>Rounded Crop 
Add prop rounded to enable circular cropping.

vue
<template>
  <p-cropper src="./assets/sample-1.jpg" rounded />
</template>Viewer Mode 
If you want to use this component for previewing image only, you can add prop no-crop to disabled cropping.

vue
<template>
  <p-cropper src="./assets/sample-1.jpg" no-crop />
</template>Binding v-model 
You can bind the result of cropped image using v-model.

vue
<template>
  <p-cropper src="./assets/sample-1.jpg" v-model="result" />
</template>result:
Encode to base64 
You can add modifier base64 to your v-model, it's enforce result to base64-dataURI.

vue
<template>
  <p-cropper src="./assets/sample-1.jpg" v-model.base64="result" />
</template>result:

Disabling Autocrop 
By default, cropping process was ran every movement (drag, zoom, & rotate). It can be exhausting the resource on some device. You can disabled it using prop no-autocrop. And to trigger the cropping, you can use templateRef on <p-cropper> component, and call .crop() function.

result:

vue
<template>
  <p-cropper
    ref="cropper"
    v-model.base64="result2"
    src="./assets/sample-1.jpg"
    no-autocrop />
  <p-button @click="doCrop">Do Crop</p-button>
</template>
<script setup lang="ts">
  const cropper = ref<InstanceType<typeof PCropper>>()
  function doCrop () {
    if (cropper.value)
      cropper.value.crop()
  }
</script>API 
Props 
| Props | Type | Default | Description | 
|---|---|---|---|
| src | String,File | - | Image source | 
| width | Number | - | Crop width, in pixel | 
| height | Number | - | Crop height, in pixel | 
| ratio | Number | 1/1 | Crop ratio | 
| img-width | Number | - | Add attribute width on img tag | 
| img-height | Number | - | Add attribute height on img tag | 
| img-class | String | - | Additional class to img tag | 
| rounded | Boolean | false | Enabling rounded crop | 
| no-crop | Boolean | false | Disabling crop mode | 
| no-autocrop | Boolean | false | Disabling autocrop | 
| modelValue | File | - | v-modelvalue binding | 
Slots 
| Name | Description | 
|---|---|
| control | Content for placing additional control | 
Events 
| Name | Arguments | Description | 
|---|---|---|
| load | - | Event when image finished loaded | 
| result | - | Event when cropped done |