--- sidebar_position: 1 slug: /image-editor --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import UppyCdnExample from '/src/components/UppyCdnExample'; # Image editor Image editor. Designed to be used with the Dashboard UI.
![Screenshot of the Image Editor plugin UI in Dashboard](https://user-images.githubusercontent.com/1199054/87208710-654db400-c307-11ea-9471-6e3c6582d2a5.png)
## When should I use this? When you want to allow users to crop, rotate, zoom and flip images that are added to Uppy. ## Install ```shell npm install @uppy/core @uppy/dashboard @uppy/image-editor ``` ```shell yarn add @uppy/core @uppy/dashboard @uppy/image-editor ``` {` import { Uppy, Dashboard, ImageEditor } from "{{UPPY_JS_URL}}" const uppy = new Uppy() uppy.use(Dashboard, { target: '#uppy', inline: true }) uppy.use(ImageEditor) `} ## Use ```js {3,7,11} showLineNumbers import Uppy from '@uppy/core'; import Dashboard from '@uppy/dashboard'; import ImageEditor from '@uppy/image-editor'; import '@uppy/core/dist/style.min.css'; import '@uppy/dashboard/dist/style.min.css'; import '@uppy/image-editor/dist/style.min.css'; new Uppy() .use(Dashboard, { inline: true, target: '#dashboard' }) .use(ImageEditor); ``` ## API ### Options :::info If you automatically want to open the image editor when an image is added, see the [`autoOpen`](/docs/dashboard#autoopen) Dashboard option. ::: #### `id` A unique identifier for this plugin (`string`, default: `'ImageEditor'`). #### `quality` Quality Of the resulting blob that will be saved in Uppy after editing/cropping (`number`, default: `0.8`). #### `cropperOptions` Image Editor is using the excellent [Cropper.js](https://fengyuanchen.github.io/cropperjs/). `cropperOptions` will be directly passed to `Cropper` and thus can expect the same values as documented in their [README](https://github.com/fengyuanchen/cropperjs/blob/HEAD/README.md#options), with the addition of `croppedCanvasOptions`, which will be passed to [`getCroppedCanvas`](https://github.com/fengyuanchen/cropperjs/blob/HEAD/README.md#getcroppedcanvasoptions). #### `actions` Show action buttons (`Object` or `boolean`). If you you’d like to hide all actions, pass `false` to it. By default all the actions are visible. Or enable/disable them individually: ```js { revert: true, rotate: true, granularRotate: true, flip: true, zoomIn: true, zoomOut: true, cropSquare: true, cropWidescreen: true, cropWidescreenVertical: true, } ``` #### `locale: {}` ```js export default { strings: { revert: 'Revert', rotate: 'Rotate', zoomIn: 'Zoom in', zoomOut: 'Zoom out', flipHorizontal: 'Flip horizontal', aspectRatioSquare: 'Crop square', aspectRatioLandscape: 'Crop landscape (16:9)', aspectRatioPortrait: 'Crop portrait (9:16)', }, }; ``` ### Events :::info You can use [`on`](/docs/uppy#onevent-action) and [`once`](/docs/uppy#onceevent-action) to listen to these events. ::: #### `file-editor:start` Emitted when `selectFile(file)` is called. ```js uppy.on('file-editor:start', (file) => { console.log(file); }); ``` #### `file-editor:complete` Emitted after `save(blob)` is called. ```js uppy.on('file-editor:complete', (updatedFile) => { console.log(updatedFile); }); ``` #### `file-editor:cancel` Emitted when `uninstall` is called or when the current image editing changes are discarded. ```js uppy.on('file-editor:cancel', (file) => { console.log(file); }); ```