• Stars
    star
    351
  • Rank 120,906 (Top 3 %)
  • Language
    JavaScript
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A React component which extracts colors from an image

react-color-extractor

size version

What

react-color-extractor is a React component that extracts colors from an image.

Motivation

This is one of the tools that I am using in creative coding. I was learning color theory and wanted a React based library to extract a collection of swatches from an image. The extracted colors then can be used to create interesting gradient patterns, loading designs with identical color scheme or crafting a symmetric color scheme across a system.

Use cases

  • Design systems

  • Creative coding

  • Creating advanced color tools

Install

npm install react-color-extractor

or if you use yarn

yarn add react-color-extractor

This package also depends on React, so make sure you've it installed.

Example

import React from 'react'
import { ColorExtractor } from 'react-color-extractor'

class App extends React.Component {
  state = { colors: [] }

  renderSwatches = () => {
    const { colors } = this.state

    return colors.map((color, id) => {
      return (
        <div
          key={id}
          style={{
            backgroundColor: color,
            width: 100,
            height: 100
          }}
        />
      )
    })
  }

  getColors = colors =>
    this.setState(state => ({ colors: [...state.colors, ...colors] }))

  render() {
    return (
      <div>
        <ColorExtractor getColors={this.getColors}>
          <img
            src="https://i.imgur.com/OCyjHNF.jpg"
            style={{ width: 700, height: 500 }}
          />
        </ColorExtractor>
        <div
          style={{
            marginTop: 20,
            display: 'flex',
            justifyContent: 'center'
          }}
        >
          {this.renderSwatches()}
        </div>
      </div>
    )
  }
}

Checkout the demo on CodeSandbox

Edit k3wj33kzw3

Examples

Check out the examples folder.

Usage

react-color-extractor can be used in two different ways.

  • With image element as children
<ColorExtractor getColors={colors => console.log(colors)}>
  <img src="..." alt="..." style={{...}} />
</ColorExtractor>

Check out this example.

  • Passing a local or remote image, or a blob url via src prop
<ColorExtractor
  src="<local-or-remote-image-url-or-blob-url>"
  getColors={colors => console.log(colors)}
/>

Check out this example.

Using remote images

In development, make sure that you've configured proxy settings in your server config when you are using the remote images, otherwise you might run into CORS issue. You can also use this chrome extension to tackle CORS issue.

API

<ColorExtractor /> props

getColors

(colors: Array<Array<number> | string>) => void

getColors callback is invoked with an array of colors, either in hex or rgb format once the image is done processing. Use this callback to update the state with the colors array

<ColorExtractor getColors={colors => this.setState({ colors: colors })} />

rgb

type: boolean

When set to true, produces the color in rgb format. By default, colors produced are in hex format

<ColorExtractor rgb getColors={colors => console.log(colors)} />

This will log colors in rgb format

onError

(error: Object) => void

onError callback is invoked if there is any issue with processing the image.

<ColorExtractor onError={error => this.setState({ hasError: true , msg: error })}>

src

type: string

src prop accepts a remote or local image url, or a blob url.

<ColorExtractor
  src="https://i.imgur.com/OCyjHNF.jpg"
  getColors={colors => console.log(colors)}
/>

maxColors

type: number

maxColors prop accepts a number for amount of colors in palette from which swatches will be generated.

<ColorExtractor src="..." getColors={colors => ...} maxColors={128} />

Contributing

If you like to contribute to this project, then follow the below instructions to setup the project locally on your machine.

git clone https://github.com/<your_username_here>/react-color-extractor

cd react-color-extractor

yarn

Type checking

Run flow type checker using yarn flow

Building the source code

Run yarn build:component to build the source code.

TODO

  • Add quantizers

More Repositories

1

react-perf-devtool

A browser developer tool extension to inspect performance of React components.
JavaScript
2,324
star
2

react-imgpro

πŸ“· Image Processing Component for React
JavaScript
2,176
star
3

terminal-in-react

πŸ‘¨β€πŸ’» A component that renders a terminal
JavaScript
2,124
star
4

redocx

πŸ“„ Create word documents with React
JavaScript
1,389
star
5

Making-a-custom-React-renderer

Tutorial on how to make a custom React renderer
JavaScript
1,286
star
6

animate-components

✨ Elemental components for doing animations in React
JavaScript
909
star
7

React-Web-AR

πŸ•ΆοΈ Augmented Reality on web with React
JavaScript
571
star
8

Python-Automation

πŸ’» These are some projects which I worked upon to automate stuffs using python
Python
246
star
9

Animated-Timeline

πŸ”₯ Create timeline and playback based animations in React
JavaScript
197
star
10

react-video-scroll

A React component to seek or control the video frame rate on scroll.
JavaScript
135
star
11

glamorous-primitives

πŸ’„ style primitive React interfaces with glamorous
JavaScript
92
star
12

react-tint

A React component that applies image processing filters to an image using Processing
JavaScript
87
star
13

react-color-tools

A set of tools as React components for working with colors 🎨
JavaScript
87
star
14

shaping-functions

Visualisation of shaping functions
JavaScript
75
star
15

linkify-markdown

πŸš€ A cli tool which automatically add references to issues, pull requests, user mentions and forks to a markdown file.
JavaScript
69
star
16

react-handy-renderer

✏️ Draw 2D primitives in sketchy style with React
JavaScript
61
star
17

generative-designs

A collection of generative design React components
JavaScript
58
star
18

stylus-in-react

πŸ’„ Style React components with Stylus
JavaScript
54
star
19

react-text-fun

React meets Blotter.js
JavaScript
52
star
20

react-marker

πŸ–οΈ Highlight keywords and add colors to your text.
JavaScript
47
star
21

generative-art-tools

Utilities for creating generative art
JavaScript
27
star
22

vscode-glamorous

πŸ€™ code snippets for glamorous
21
star
23

Elements-of-physics

Representing elements of physics using React
JavaScript
20
star
24

react-shader-canvas

A small utility function to render the shaders using React
JavaScript
20
star
25

Creating-a-pretty-printer

This is a tutorial for creating a pretty printer in JavaScript
JavaScript
13
star
26

generative-art-snippets

A collection of some useful snippets used in crafting computational art
10
star
27

glamorous-redocx

style redocx components with glamorous πŸ’„
JavaScript
10
star
28

Tidings

πŸ—žοΈ A NLP based news app powered by API.ai
JavaScript
8
star
29

pro-branch

A small package that provides helpers to manage control flow in React
JavaScript
8
star
30

lightup

πŸ’‘ A cli tool to quickly launch your react app in an effortless way.
JavaScript
8
star
31

glamorous-stylus

Use Stylus with glamorous
JavaScript
6
star
32

react-image-overlay-effect

A React component for displaying an overlay effect on an image.
TypeScript
5
star
33

component-dot-json

Create and mock stateless React components using JSON
JavaScript
5
star
34

Creating-a-JavaScript-UI-library

This is a tutorial for creating a JavaScript UI library.
5
star
35

babel-preset-hyperapp

A Babel preset for HyperApp
JavaScript
4
star
36

HyperApp-Examples

HyperApp examples
JavaScript
4
star
37

word-classes-visualiser

A small tool based on Compromise NLP to visualise the different word classes from English grammar.
JavaScript
4
star
38

Blog

πŸ“— My writings
3
star
39

algorithmic-art-sketchbook

work in progress
JavaScript
3
star
40

Learning-Processing

A curated list of resources, links and books for learning processing
JavaScript
3
star
41

glam-atom

Glamorous Snippets for Atom
3
star
42

css-to-rn

Convert css string to React Native
JavaScript
3
star
43

myspace

Blog
2
star
44

Working-with-APIs

This repository contains scripts for accessing the third party APIs using Python, JavaScript and Ruby.
Python
2
star
45

T-Box

A command line utility to manage the file uploads, downloads and sharing directly from terminal on your Dropbox.
JavaScript
2
star
46

Nitin-Blog

Welcome to my blog!
2
star
47

personal-blog

My blog
JavaScript
2
star
48

Resume

1
star
49

test-repo

1
star
50

test-draft-releaser

1
star
51

nextjs-netlify-blog-template

TypeScript
1
star
52

Escaper

A small library which provides methods to escape and unescape HTML entities.
JavaScript
1
star
53

nextjs-netlify-blog-template-nitin

1
star
54

insiderin-assignment

assignment
JavaScript
1
star
55

Project-Euler

Contains my solutions to the computational problems at https://projecteuler.net/
Python
1
star
56

nitin42

My personal repository
1
star
57

Real-Markdown

An app that let’s us view the raw markdown on one side and the converted markdown (to HTML) on the other side.
JavaScript
1
star
58

routes-getter

Walks through your routes folder and imports them to your project.
JavaScript
1
star
59

grabvatar

An amazing tool to generate cool avatars for your profile picture given an identifier.
JavaScript
1
star