Formuła do znalezienia wyniku koloru po zastosowaniu do niego krycia x%?


10

Mam 2 kolory

  1. #a1a2a4
  2. czarny ( #000000)
  3. biały ( #ffffff)

Teraz muszę wiedzieć, ile krycia (w procentach) muszę zastosować do drugiego koloru (czarny) na tle trzeciego koloru (biały), aby uzyskać kolor „najbliższy” (jak określa oko) do pierwszego kolor ( #a1a2a4).

Jak mam to zrobić?



Jestem trochę zdezorientowany twoim sformułowaniem: chcesz, grayktóry jest najbliższy tonowi określonemu kolorowi, prawda?
horatio

Odpowiedzi:


6

Ten przypadek jest mniej więcej prosty (masz do czynienia z czarno-białym).

Po zastosowaniu koloru (# a1a2a4) sprawdź poziomy RGB:

Poziomy RGB

Widać, że ma około 162 (średnio), a wiedząc, że może on wynosić od 0 do 255, wystarczy dowiedzieć się procent:

162 * 100/255 = ~ 63,5%

Teraz, ponieważ RGB działa w odwrotny sposób niż CMYK (pod względem mieszania kolorów, tzn. Pełny kolor oznacza biały, a pełny CMYK oznacza czarny), rzeczywisty procent w tym przypadku to różnica między 100% a wartością że mamy:

100–63,5 = 36,5%

Więc jeśli zastosujesz 36% krycia, będzie miał ten kolor, właśnie go przetestowałem.

Oczywiście w przypadkach z bardziej złożonymi kolorami ta metoda nie działa i nie wiem, jak uzyskać procent, zrobiłbym klasyczną próbę i błąd.


4

Pytanie, jeśli dobrze to rozumiem, brzmi: „Jak obliczyłbyś to programowo?” Prosta matematyka przekształca docelowy „kolor” na wartość alfa.

Biały == [1,1,1] lub #ffffff lub 255,255,255, w zależności od aplikacji. Czarny == [0,0,0] itd.

Więc: znormalizuj wartość docelową (w tym przypadku jest to .6314), odejmij od 1 i zastosuj do czarnej warstwy jako wartość alfa. Możesz zrobić to jeden kanał na raz i uśrednić wyniki, ale po co się tym przejmować, ponieważ twój kolor jest nie do odróżnienia (dla oka) od neutralnej szarości # a1a1a1. (Sprawa staje się bardziej złożona, jeśli widoczny jest odcień, ponieważ kanały będą miały różne wartości, ale obowiązuje ta sama zasada).


To jest naprawdę seksowny geekage. 8)
Lauren-Clear-Monica-Ipsum

3
Dziękuję! <dostosowuje ochraniacz kieszeni, upewnia się, że długopisy są równomiernie rozmieszczone>
Alan Gilbertson

0

Nieco szybszy wariant prób i błędów:

Utwórz kolor heksadecymalny w Photoshopie w dokumencie CMYK i spójrz na wartości CMYK. Dostaję 39/32/31/1.

Utwórz dwie warstwy, górną czarną i dolną białą.

Podnieś okno informacyjne. Oddzielnie pociągnij okno Warstwy.

Graj z kryciem czarnej warstwy. Użyj kroplomierza nad kolorem i sprawdź w oknie informacyjnym, aby zobaczyć, jak blisko się zbliżasz. To głównie oszczędza czas zmiany krycia - spłaszcz - sprawdź kolor - cofnij spłaszczanie.


Masz rację, ale jest o wiele bardziej geekierski sposób na zrobienie tego. 8-D
Alan Gilbertson

0

Biorąc pod uwagę kolory pierwszego planu i tła (jednolite wartości dla kanałów R, G i B), nie można uzyskać niejednorodnego koloru #a1a2a4poprzez zmianę krycia, ponieważ krycie wpływa na wszystkie kanały jednocześnie. Można jednak uzyskać kolor „wystarczająco blisko” #a1a1a1, ustawiając krycie czerni na 0.37. Oto narzędzie, którego użyłem:

http://colorizer.org/

  1. Kliknij „Tło” i ustaw wartość szesnastkową na #fff
  2. Kliknij „Button” i ustaw wartość szesnastkową na #000
  3. Użyj narzędzia kroplomierza, aby znaleźć docelowy kolor w widmie „Alpha / Krycie”, a następnie kliknij widmo, aby uzyskać wartość krycia.

0

Znalezienie tego wzoru jest świetnym ćwiczeniem z algebry liniowej. Za pomocą RGB i algebry liniowej wymyśliłem tę macierz M. Jeśli chcesz połączyć RGBred = (237,32,36) i RGBblue = (60,84,165), gdzie dolna warstwa ma 100% krycia, a górna 50% nieprzezroczystość następnie pomnóż Mv, gdzie M jest macierzą poniżej, a v = (237,32,36,60,84,165). Otrzymujemy Mv = (157,777,71.444,107.444).

Rzeczywista wartość to (159,71,103), więc jesteśmy dość blisko, ale jest pewien błąd - prawdopodobnie albo dlatego, że użyłem zaokrąglonych wartości do obliczenia M i / lub ponieważ może nie używa RGB, ale inną skalę do obliczenia przezroczystości spłaszczenie. Prawdopodobnie mógłbym uzyskać dokładniejszą matrycę, stosując podejście typu najmniejszych kwadratów, ale byłem zbyt leniwy.

Macierz MI ma

M=[-0.316438695251802233798084520470 -0.0205011495462359668020633451463 -0.627769626184202308338411657855 
    4.83088877248122926488562947487 -0.673109830626855247075257552051 0.137681159420289855072463768116]
[2.67597831835520455938498494132 0.215715090307662822540065922133 1.69848459052630338054958974280 -13.9750196437925615505500261925 
    3.20021608171817705605028810915 -0.370471014492753623188405797101]
[-6.62632375526968419148486246260 0.509833585674322977062528534400 -3.14436345482363613544439381045 35.0629474419416797625283743688
    -6.69242186135847738781211803779 1.41304347826086956521739130435]
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.