bgrins / TinyColor

Fast, small color manipulation and conversion for JavaScript
https://bgrins.github.io/TinyColor/
MIT License
5.05k stars 438 forks source link

The two HSV values are not equal before and after the tinyColor conversion #219

Open DangoSky opened 3 years ago

DangoSky commented 3 years ago

I wrote a demo to reproduce this problem.

https://codepen.io/dangosky/pen/JjRGGbZ

jlove73071 commented 3 years ago

RGB has 3 color channels. each channel has 1 byte stored in memory.

HSL/HSV has 3 channels storing the same information. Each channel is a REAL (not integer) number. If you pass in HSLA and convert to RGB, there will often be rounding that occurs. Converting from HSV to RGB and back will not likely result in the same numbers. Converting to RGB to HSV and back to RGB should produce the same results though, in my experience,

fa3eng commented 1 year ago

@DangoSky color.toRgbString() will round the converted value, so the returned value itself may not be accurate.

image

I would suggest not using this library for continuous conversion, as the precision of the return values may have already been rounded.

fa3eng commented 1 year ago

I meet same problem, and I try to use other library. This library is not suitable for color conversion.

https://codepen.io/meakle/pen/XWPvEEo