React.js ライブラリ「react-easy-crop」を使用して画像を切り取ったように表示する

React.js ライブラリ「react-easy-crop」を使用して画像を切り取ったように表示する

ライブラリ「react-easy-crop」をインストールすると、画像を切り取ったように表示することが可能です。ここでは、react.jsでreact-easy-cropを利用するための手順と簡単な使い方を記述してます。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • node V12.13.1
  • npm 6.14.1
  • React 16.13.0

react.js環境構築

下記のコマンドで構築してます。ここでは、react-appという名前でプロジェクトを作成してます。

create-react-app react-app

react-easy-cropインストール

作成したプロジェクトに移動して、インストールします。

## 作成したプロジェクトに移動
cd react-app
 
## インストール
npm install react-easy-crop

react-easy-crop使い方

srcディレクトリにsample.jsと名前で下記のコードを記述します。

import React from 'react';
import Cropper from 'react-easy-crop'

class Sample extends React.Component {
    state = {
      image: 'https://cdn.pixabay.com/photo/2020/03/06/16/22/gerbera-4907511_960_720.jpg',
      crop: { x: 0, y: 0 },
      zoom: 2,
      aspect: 4 / 3,
    }
  
    onCropChange = crop => {
      this.setState({ crop })
    }
  
    onCropComplete = (croppedArea, croppedAreaPixels) => {
      console.log(croppedArea, croppedAreaPixels)
    }
  
    onZoomChange = zoom => {
      this.setState({ zoom })
    }
  
    render() {
      return (
        <Cropper
          image={this.state.image}
          crop={this.state.crop}
          zoom={this.state.zoom}
          aspect={this.state.aspect}
          onCropChange={this.onCropChange}
          onCropComplete={this.onCropComplete}
          onZoomChange={this.onZoomChange}
        />
      )
    }
  }
  
export default Sample

次に、srcディレクトリ配下にあるApp.jsを下記のように編集します。

import React from 'react';
import Sample from './sample';
import './App.css';

function App() {
  const style = {
    width: "50%",
    margin: "0 auto",
    marginTop: 150
  };
  return (
    <div className="App">
      <div style={style}>
        <Sample />
      </div>
    </div>
  );
}

export default App;

実行します。

npm start

ブラウザから http://プライベートIP:3000にアクセスすると、画像が切り取ったように表示されていることが確認できます。