Giter VIP home page Giter VIP logo

reiniiriarios / chromaticity-color-utilities Goto Github PK

View Code? Open in Web Editor NEW
13.0 1.0 4.0 4.07 MB

:art: Color utilities for Node.js. Conversion, modification, and color schemes of: RGB (at any bit depth), HSV, HSL, HSI, HSP, CYMK, YIQ, XYZ, xyY, L*a*b*, L*u*v*, Y'PbPr, Y'CbCr, and more.

Home Page: https://reiniiriarios.github.io/chromaticity-color-utilities/

License: GNU General Public License v3.0

TypeScript 79.82% JavaScript 20.18%
color-conversion color-schemes color-edit video-color color-spaces standard-illuminants chroma rgb bit-depth hue

chromaticity-color-utilities's Introduction

chromaticity-color-utilities

downloads types: Typescript license: GPL-3.0-or-later npm version code style: prettier

Color utilities for Node.js.

Conversion, modification, and color schemes of: RGB (at any bit depth), HSV, HSL, HSI, HSP, CYMK, YIQ, XYZ, xyY, L*a*b*, L*u*v*, Y'PbPr, Y'CbCr, and more.

Install

npm i chromaticity-color-utilities

Documentation

๐Ÿ“– Please read the full Documentation for details on each method as well as numerous usage examples.

Example Usage

TypeScript

import Color from 'chromaticity-color-utilities'

const color1: Color.hsv = Color.from('rgb', [255, 128, 0]).to('hsv')

const scheme1: Color.lab[] = Color.from('hex', 0x9a237f)
  .modify('desaturate', { amount: 0.2 })
  .to('lab', {
    colorSpace: 'AdobeRGB',
    referenceWhite: 'D50',
  })
  .scheme('gradient', {
    with: Color.from('hsl', [300, 50, 45]),
    colors: 5,
  })

const yourMethod = (rgb: Color.rgb): Color.hsv => {
  // do things
  let hsv: Color.hsv = rgb.to('hsv')
  // do things
  return hsv
}

JavaScript

const Color = require('chromaticity-color-utilities')

const color1 = Color.from('rgb', [255, 128, 0]).to('hsv')

const scheme1 = Color.from('hex', 0x9a237f)
  .modify('desaturate', { amount: 0.2 })
  .to('lab', {
    colorSpace: 'AdobeRGB',
    referenceWhite: 'D50',
  })
  .scheme('gradient', {
    with: Color.from('hsl', [300, 50, 45]),
    colors: 5,
  })

TypeScript (deprecated type import method)

colorTypes is still supported, but deprecated and will be removed in a future release.

import Color, { colorTypes } from 'chromaticity-color-utilities'

const color1: colorTypes.hsv = Color.from('rgb', [255, 128, 0]).to('hsv')

Known Issues

  • YCbCr validates only with a high tolerance. Not sure if floating point issue.

Compiling from Source

git clone https://github.com/reiniiriarios/chromaticity-color-utilities.git
cd chromaticity-color-utilities
npm ci
tsc

(Typescript not added as dependency, install with npm i -g typescript.)

To Do List

  • LCHab - basic support added
  • LCHuv
  • HSLuv
  • HPLuv
  • YUV
  • Gamma adjustment modification
  • Auto-gamma adjustment and conversion for rec709, rec2020, and jpeg to/from ypbpr
    • note to self: rec709 does gamma conversion before while rec2020 does gamma conversion after when converting to ypbpr (I think)
  • Need way more comments and better variable names
  • Write more documentation wrt mathematics.
  • Integrate my references better. :)
  • For RGBA to CMYK, mix alpha with white
  • Support for 8-digit hex values (RRGGBBAA)
  • Diagrams in docs

chromaticity-color-utilities's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

chromaticity-color-utilities's Issues

hsp2rgb conversion error

If I convert RGB color with rgb2hsp and convert back to RGB from the previously calculated HSP with hsp2rgb, the results are not the same. I made the test with no rounding. The rgb2hsp subrutine is good. The hsp2rgb have miscalculations.
for example:

RGB in:
"r": 66,
"g": 114,
"b": 242,

HSP out:
"h": 223.63636363636363,
"s": 72.72727272727273,
"p": 48.99197966515496,

convert HSP back to RGB:
"r": 76,
"g": 131,
"b": 255,

It is not the same!

I have no more time to debug where can be the miscalculation. I found a 100% working algorithm in this project: https://github.com/colorjs/color-space/blob/master/hsp.js
It can be ported easily.

Color.from is not a function

I'm trying this out for first time, using the sample code and I'm getting this error that Color.from is not a function.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.