Categories
Vue

How to Make a Photo Editor with React

Making a photo editor that is as least as capable as Microsoft Paint is not hard. Developers have done the hard work for building photo editor widgets for JavaScript. One example is the Toast UI Image Editor, located at https://ui.toast.com/tui-image-editor.

It is a very capable photo editor. You can style it with themes and users can apply effects that they like to their image easily. The list of features for the editor include loading images, undo and redo, crop, flip, rotate, draw, add shapes, write text, and add mask and image filters.

You can retrieve the image easily and save it to disk since the editor loads the image into a HTML canvas element.

In this article, we will build a photo editor with React using the React version of the Toast UI Image Editor. We will style it and add a download button to save the image to disk.

To start, we create the app with Create React App. Run npx create-react-app photo-editor-app to create the project and install the packages.

Next we add our own packages to the app. We need @toast-ui/react-image-editor , which the React version of the Toast UI Image Editor, Bootstrap and React Bootstrap for styling, React Router for routing, and Download.js for downloading the image to disk.

To do this, run npm i @toast-ui/react-image-editor bootstrap downloadjs react-bootstrap react-router-dom . This will install all the libraries listed above.

With all the packages installed, we can start writing code. First we start with modifying App.js . We replace the existing code with:

import React from "react";
import "./App.css";
import TopBar from "./TopBar";
import { Router, Route, Link } from "react-router-dom";
import { createBrowserHistory as createHistory } from "history";
import HomePage from "./HomePage";
const history = createHistory();

function App() {
  return (
    <div className="App">
      <Router history={history}>
        <TopBar />
        <Route
          path="/"
          exact
          component={HomePage}
        />
      </Router>
    </div>
  );
}

export default App;

We will display the top bar which we will create and add a route to the home page so we can access it after we build it.

Next in App.css we replace the existing code with:

.center {
    text-align: center;
}

so that we can center our titles and buttons later.

Next we add a home page. Create a file called HomePage.js in the src folder and add the following:

import React, { useState, useEffect } from "react";
import "./HomePage.css";
import "tui-image-editor/dist/tui-image-editor.css";
import ImageEditor from "@toast-ui/react-image-editor";
import Button from "react-bootstrap/Button";
const icona = require("tui-image-editor/dist/svg/icon-a.svg");
const iconb = require("tui-image-editor/dist/svg/icon-b.svg");
const iconc = require("tui-image-editor/dist/svg/icon-c.svg");
const icond = require("tui-image-editor/dist/svg/icon-d.svg");
const download = require("downloadjs");

const myTheme = {
  "menu.backgroundColor": "white",
  "common.backgroundColor": "#151515",
  "downloadButton.backgroundColor": "white",
  "downloadButton.borderColor": "white",
  "downloadButton.color": "black",
  "menu.normalIcon.path": icond,
  "menu.activeIcon.path": iconb,
  "menu.disabledIcon.path": icona,
  "menu.hoverIcon.path": iconc,
};

function HomePage() {
  const [imageSrc, setImageSrc] = useState("");
  const imageEditor = React.createRef();

  const saveImageToDisk = () => {
    const imageEditorInst = imageEditor.current.imageEditorInst;
    const data = imageEditorInst.toDataURL();
    if (data) {
      const mimeType = data.split(";")[0];
      const extension = data.split(";")[0].split("/")[1];
      download(data, `image.${extension}`, mimeType);
    }
  };

  return (
    <div className="home-page">
      <div className="center">
        <h1>Photo Editor</h1>
        <Button className='button' onClick={saveImageToDisk}>Save Image to Disk</Button>
      </div>
      <ImageEditor
        includeUI={{
          loadImage: {
            path: imageSrc,
            name: "image",
          },
          theme: myTheme,
          menu: ["crop", "flip", "rotate", "draw", "shape", "text", "filter"],
          initMenu: "",
          uiSize: {
            height: `calc(100vh - 160px)`,
          },
          menuBarPosition: "bottom",
        }}
        cssMaxHeight={window.innerHeight}
        cssMaxWidth={window.innerWidth}
        selectionStyle={{
          cornerSize: 20,
          rotatingPointOffset: 70,
        }}
        usageStatistics={true}
        ref={imageEditor}
      />
    </div>
  );
}

export default HomePage;

There are a few tricks to note to get the image editor working properly. First we need to include the icons ourselves by adding:

const icona = require("tui-image-editor/dist/svg/icon-a.svg");
const iconb = require("tui-image-editor/dist/svg/icon-b.svg");
const iconc = require("tui-image-editor/dist/svg/icon-c.svg");
const icond = require("tui-image-editor/dist/svg/icon-d.svg");

This is not in the documentation so if you just follow the instructions, you won’t see the icons in the toolbar.

To change the colors of the image editor, we have:

const myTheme = {
  "menu.backgroundColor": "white",
  "common.backgroundColor": "#151515",
  "downloadButton.backgroundColor": "white",
  "downloadButton.borderColor": "white",
  "downloadButton.color": "black",
  "menu.normalIcon.path": icond,
  "menu.activeIcon.path": iconb,
  "menu.disabledIcon.path": icona,
  "menu.hoverIcon.path": iconc,
};

This is fully documented in http://nhn.github.io/tui.image-editor/latest/themeConfig. The code above just changes the image editor to a black background and change the color of the download button to black with a white background.

Next we changed the size of the image editor by adding:

cssMaxHeight={window.innerHeight}
cssMaxWidth={window.innerWidth}

and we added the toolbar functionality by adding:

menu: ["crop", "flip", "rotate", "draw", "shape", "text", "filter"]

We set initMenu to an empty string so that it won’t show any dialog when user load the image.

To let user save the image to disk, we add a button with a handler to do this. We have:

<Button className='button' onClick={saveImageToDisk}>Save Image to Disk</Button>

The saveImageToDisk handler saves the image to disk and we get the image’s base64 text by adding:

const imageEditorInst = imageEditor.current.imageEditorInst;
const data = imageEditorInst.toDataURL();

into the saveImageToDisk function.

Since we set the ref prop in the ImageEditor component by adding const imageEditor = React.createRef();, we can get the image with those 2 lines above.

If data is defined, then we can download the image. We add:

const mimeType = data.split(";")[0];
const extension = data.split(";")[0].split("/")[1];
download(data, `image.${extension}`, mimeType);

to get the file type and the extension of the image.

Base64 data is string that starts with some file type metadata, for example:

data:image/png;base64,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

Notice that we have data:image/png at the beginning. That tells us that the image is in png format, so we can extract those with:

const mimeType = data.split(";")[0];
const extension = data.split(";")[0].split("/")[1];

and pass them as arguments to the download function.

Then create a file called HomePage.css , and add:

.button {
    margin-bottom: 10px;
}

to add some margin to the ‘Save file to disk’ button.

Next we build the top bar by creating TopBar.js in the src folder and add the following code:

import React from "react";
import Navbar from "react-bootstrap/Navbar";
import Nav from "react-bootstrap/Nav";
import "./TopBar.css";
import { withRouter } from "react-router-dom";

function TopBar({ location }) {
  const { pathname } = location;

  return (
    <Navbar expand="lg" variant="dark">
      <Navbar.Brand href="#home">Photo Editor App</Navbar.Brand>
      <Navbar.Toggle aria-controls="basic-navbar-nav" />
      <Navbar.Collapse id="basic-navbar-nav">
        <Nav className="mr-auto">
          <Nav.Link href="/" active={pathname == "/"}>
            Home
          </Nav.Link>
        </Nav>
      </Navbar.Collapse>
    </Navbar>
  );
}

export default withRouter(TopBar);

The Navbar component is provided by React Boostrap. We wrap the TopBar component with the withRouter function so that we get the location prop passed in, which has the pathname property. We use pathname to check for the path and see if we set the active propr of Nav.Link to true by seeing the path match the URL of the link.

Next create a file called TopBar.css and add:

nav {
    background-color: green!important;
}

to change the color of the Navbar .

Finally, in index.html , we replace the existing code with:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"
    />
    <link rel="apple-touch-icon" href="logo192.png" />
    <!--
      manifest.json provides metadata used when your web app is installed on a
      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
    -->
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
    <!--
      Notice the use of %PUBLIC_URL% in the tags above.
      It will be replaced with the URL of the `public` folder during the build.
      Only files inside the `public` folder can be referenced from the HTML.

      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
      work correctly both with client-side routing and a non-root public URL.
      Learn how to configure a non-root public URL by running `npm run build`.
    -->
    <title>Photo Editor App</title>
    <link
      rel="stylesheet"
      href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
      integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
      crossorigin="anonymous"
    />
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
    <!--
      This HTML file is a template.
      If you open it directly in the browser, you will see an empty page.

      You can add webfonts, meta tags, or analytics to this file.
      The build step will place the bundled scripts into the <body> tag.

      To begin the development, run `npm start` or `yarn start`.
      To create a production bundle, use `npm run build` or `yarn build`.
    -->
  </body>
</html>

We changed the title of the app and added the Bootstrap CSS to the head tag.

Categories
JavaScript Answers

How to Check the HTML Element’s CSS display Property Value with JavaScript?

To check the HTML element’s CSS display property value with JavaScript, we can use the window.getComputedStyle method with the element we want to get the display property for.

We can also use the style.display property if the display CSS property value isn’t inherited from another location.

For instance, if we have the following HTML:

<div style='display: inline'>
  hello world
</div>

Then we can get the display property by writing:

const element = document.querySelector('div')
const {
  display
} = window.getComputedStyle(element, null);
console.log(display)

console.log(element.style.display);

First, we get the div with document.querySelector .

We call getComputedStyle with the element to get an object with the styles of element .

Then we get the display property from the returned object.

Also, we use the element.style.display property to get the display CSS property value.

Therefore, both console logs should log 'inline' .

Categories
JavaScript Answers

How to Make TinyMCE Paste in Plain Text by Default?

To make TinyMCE paste in plain text by default, we can set the paste_as_text option to true .

For example, we can write the following HTML:

<script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js" referrerpolicy="origin"></script>

<textarea id="mytextarea">Hello, World!</textarea>

to add the TinyMCE script and a text area for the TinyMCE editor.

Then we can convert the text area to a TinyMCE editor with the following JavaScript code:

tinymce.init({
  selector: '#mytextarea',
  plugins: "paste",
  paste_as_text: true
});

We call the tinymce.init method with an object that has the selector , plugins , and paste_as_text properties.

selector is the selector of the text area to convert to a TinyMCE editor.

plugins is set to 'paste' to add the paste plugin to let us control pasting text.

And we set paste_as_text to true to make TinyMCE paste text as plain text.

Categories
JavaScript Answers

How to Get the Last Item in a JavaScript Object?

To get the last item in a JavaScript object, we can use the Object.entries method to get the key-value pair arrays of an object in an array.

Therefore, we can use it to get the last item of the JavaScript object.

For instance, we can write:

const obj = {
  'a': 'apple',
  'b': 'banana',
  'c': 'carrot'
}
const entries = Object.entries(obj)
const [last] = entries.slice(-1)
console.log(last)

We have the obj object that we want to get the last property from.

Next, we call Object.entries with obj to get an array of key-value pair arrays of obj .

Then we call slice with -1 to return an array with the last entry of entries .

And we destructure that and assign it to last .

Therefore, last is:

["c", "carrot"]
Categories
JavaScript Answers

How to Filter or Map Nodelists with JavaScript?

To filter or map nodelists with JavaScript, we can use the spread operator to convert the nodelist to an array.

For instance, if we have the following HTML:

<p>
  foo
</p>
<p>
  bar
</p>

Then we can convert the nodelist with the selected p elements and call map and filter on it by writing:

const nodes = document.querySelectorAll('p')
const texts = [...nodes].map(n => n.textContent)
console.log(texts)
const filtered = [...nodes].filter(n => n.textContent.includes('foo'))
console.log(filtered)

We call document.querySelectorAll to return a nodelist with the p elements.

Then we use the spread operator to spread the items in the nodes nodelist into an array.

And then we call map to map the node array to an array of text.

Then we call filter on the array of nodes with a callback to return the nodes with textContent that includes 'foo' .

Therefore, texts is [“n foon”, “n barn”]

And filtered has an array with the first p element.