How to get shades and tints of a color hex with Matlab?
35 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
How can I get shades and tints of a color hex in an automatic way (maybe still represented as color hex, or also color rgb)? Is there any in-built function?
% input
strong_pink = '#f907ff';
% output (as in https://www.color-hex.com/color/f907ff)
shades = {
'#f907ff', % <-- input
'#e006e5',
'#c705cc',
'#ae04b2',
'#950499',
'#7c037f',
'#630266',
'#4a024c',
'#310133',
'#180019',
'#000000'};
tints = {
'#f907ff' % < -- input
'#f91fff'
'#fa38ff'
'#fa51ff'
'#fb6aff'
'#fc83ff'
'#fc9bff'
'#fdb4ff'
'#fdcdff'
'#fee6ff'
'#ffffff'};
0 Commenti
Risposta accettata
DGM
il 11 Mag 2021
There are a number of ways you could do it. The simple way would be to just interpolate between that color tuple and white (or black) in RGB.
incolor = '#f907ff';
nsteps = 11;
% convert to a usable RGB tuple
incolor = incolor(incolor~='#');
incolor = hex2dec(reshape(incolor,2,3).').';
% calculate output colors
scale = linspace(1,0,nsteps);
shades = uint8(incolor.*scale.')
tints = uint8(incolor + (255-incolor).*fliplr(scale).')
% convert outputs to char hex tuples
shadeshex = [repmat('#',[nsteps 1]) reshape(dec2hex(reshape(shades.',[],1)).',6,[]).']
tintshex = [repmat('#',[nsteps 1]) reshape(dec2hex(reshape(tints.',[],1)).',6,[]).']
This is essentially the same method used by these tools:
You could also linearize the RGB values in some way prior to interpolating, or you could do the interpolation using a different color model. You could make it as complicated as you like. I didn't bother to see how exactly that website chose to do it.
0 Commenti
Vedere anche
Categorie
Scopri di più su Multidimensional Arrays in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!