This is the archived documentation for Doka Image Editor v7.

Please visit pqina.nl/pintura/docs/ to see documentation for the latest version of Pintura Image Editor.

Setting up Doka Image Editor with Vue

For a quick start use the Vue example project included in the product package as a guideline. It includes a normal, modal, and overlay editor example as well as an integration of vue-filepond and Doka Image Editor.

We can install the doka and vue-doka with npm by copying both of the dependencies to the 'local_modules' folder in the root of our Vue project and running the following command to install them locally.


npm install --save ./local_modules/vue-doka ./local_modules/doka

Now we can import the modules like we normally would and use the Vue <DokaImageEditor>, <DokaImageEditorModal>, and <DokaImageEditorOverlay> components.

Events and properties

To listen for DOM events we can use the Vue v-on directive. Please note that just as with the Doka Image Editor Custom Element events are prefixed with doka:, so instead of listen for load we listen for doka:load.

<DokaImageEditor @doka:load="handleImageLoad($event)"></DokaImageEditor>

Properties can be used as we would with the normal JavaScript version of the editor but should be prefixed with a colon ':', so src needs to be set as :src

<DokaImageEditor :src="./my-image.jpeg"></DokaImageEditor>

Default implementation example

In the default example below we'll use the getEditorDefaults method to quickly create an image editor.

This creates a "default" editor that has all available plugins loaded and comes preset with all plugin default options and English locale. Each of these settings can be adjusted freely.

<template>
    <div>
        <div style="height: 600px">
            <DokaImageEditor
                v-bind="editorDefaults"
                :src="src"
                :imageCropAspectRatio="imageCropAspectRatio"
            ></DokaImageEditor>
        </div>
    </div>
</template>
<script>
    // Import the editor default configuration
    import { getEditorDefaults } from 'doka';

    // Import the component from `vue-doka`
    import { DokaImageEditor } from 'vue-doka';

    export default {
        name: 'App',
        components: {
            DokaImageEditor,
        },
        data() {
            return {
                // Pass the editor default configuration options
                editorDefaults: getEditorDefaults(),

                // The source image to load
                src: './my-image.jpeg',

                // This will set a square crop aspect ratio
                imageCropAspectRatio: 1,
            };
        },
    };
</script>
<style>
    @import '../node_modules/doka/doka.css';
</style>

Advanced implementation example

In this example we'll create a custom editor, using a custom set of plugins, locale, and available options.

While this example is a lot more verbose it does allow us to create a more optimal editor package. The build process will tree-shake unused functionality resulting in a smaller build target.

<template>
    <div>
        <div style="height: 600px">
            <DokaImageEditor
                v-bind="editorDefaults"
                :src="src"
                :imageCropAspectRatio="imageCropAspectRatio"
            ></DokaImageEditor>
        </div>
    </div>
</template>
<script>
    // Import the editor functionality
    import {
        // Import the default image reader and writer
        createDefaultImageReader,
        createDefaultImageWriter,

        // The method used to register the plugins
        setPlugins,

        // The plugins we want to use
        plugin_crop,
        plugin_finetune,
        plugin_annotate,

        // The user interface and plugin locale objects
        locale_en_gb,
        plugin_crop_locale_en_gb,
        plugin_finetune_locale_en_gb,
        plugin_annotate_locale_en_gb,

        // Because we use the annotate plugin we also need
        // to import the markup editor locale
        markup_editor_locale_en_gb,

        // Import the default configuration for the markup editor and finetune plugins
        markup_editor_defaults,
        plugin_finetune_defaults,
    } from 'doka';

    // Import the component from `vue-doka`
    import { DokaImageEditor } from 'vue-doka';

    // This registers the plugins with Doka Image Editor
    setPlugins(plugin_crop, plugin_finetune, plugin_filter);

    export default {
        name: 'App',
        components: {
            DokaImageEditor,
        },
        data() {
            return {
                // Our editor custom configuration options
                editorDefaults: {
                    // This will read the image data (required)
                    imageReader: createDefaultImageReader(),

                    // This will write the output image
                    imageWriter: createDefaultImageWriter(),

                    // The markup editor default options, tools, shape style controls
                    ...markup_editor_defaults,

                    // The finetune util controls
                    ...plugin_finetune_defaults,

                    // The icons and labels to use in the user interface (required)
                    locale: {
                        ...locale_en_gb,
                        ...plugin_crop_locale_en_gb,
                        ...plugin_finetune_locale_en_gb,
                        ...plugin_annotate_locale_en_gb,
                        ...markup_editor_locale_en_gb,
                    },
                },

                // The source image to load
                src: './my-image.jpeg',

                // This will set a square crop aspect ratio
                imageCropAspectRatio: 1,
            };
        },
    };
</script>
<style>
    @import '../node_modules/doka/doka.css';
</style>

Next steps

With the editor set up, we can continue to configure the editor to our liking by adjusting the available options exposed by the editor API