Czy za pomocą GIMP można „skasować” kolor?

9

Obecnie pracuję nad aplikacją na iOS i próbuję odtworzyć ich standardowe okno dialogowe alertu. Udało mi się dowiedzieć, jaka jest wartość alfa na tle, z którego korzysta, poprzez próbkowanie kolorów na jednolitym czarnym widoku i jednolitym białym widoku.

Biorąc pod uwagę te informacje, za pomocą GIMP można po prostu „skasować” kolor tła, aby pozostało mi tylko oryginalne, nie mieszane tło alertu?

Mam tylko widok alertu w formie obrazu jako zrzut ekranu z uruchomionej aplikacji.

Dan F.
źródło

Odpowiedzi:

8

Tak, to możliwe. Pozwól, że nakreślę, jak to się robi, używając tego obrazu z Wikimedia Commons (autor: ed_g2s , licencjonowany jako CC-By-SA 3.0 ) jako przykład:

Obraz demonstracyjny przezroczystości PNG autorstwa ed_g2s, na licencji CC-By-SA 3.0

  1. Otwórz czarno-białe wersje tła jako warstwy tego samego obrazu (używając Otwórz jako warstwy ... lub po prostu otwórz oba i skopiuj i wklej jeden do drugiego). Przenieś białą warstwę ponad czarną warstwę, jeśli nie jest już w ten sposób. Dwie warstwy powinny wyglądać mniej więcej tak:

    Obraz demonstracyjny z czarnym tłem Demonstracja wizerunek z białym tłem

  2. Weź różnicę warstw: sklonuj czarną warstwę (będziesz jej potrzebować później), zmień tryb warstwy białej na „różnicę” i scal ją. Odwróć wynik. Daje to kanał alfa oryginalnego obrazu.

    Zrekonstruowany kanał alfa

    Edycja: Jeśli tła nie są czarno-białe, odwrócona warstwa różnicowa nie będzie miała czarnego tła. Aby to naprawić, najpierw należy desaturować warstwę (w dowolnym trybie zapewniającym najlepszy kontrast), a następnie użyć Kolorów → Auto → Normalizuj, aby tło było czarne. Możesz także użyć Miksera kanałów , ale jest to trochę trudniejsze w użyciu.

    ( Normalizacja powyżej działa, jeśli odtwarzany kanał alfa ma co najmniej niektóre części ze 100% kryciem; jeśli odtwarzany obraz jest wszędzie przezroczysty, możesz użyć Kolory → Poziomy ..., aby zamiast tego ustawić tylko czarny punkt. )

    Jeśli jeszcze go nie masz, musisz utworzyć wersję swojego obrazu z czarnym tłem do następnego kroku. Aby to zrobić, wykonaj następujące dodatkowe kroki:

    • Wybierz dowolną oryginalną wersję z ciemniejszym tłem. Utwórz na nim nową warstwę wypełnioną kolorem tła.
    • Sklonuj warstwę różnicową i ponownie ją odwróć, aby miała białe tło. Umieść tę warstwę na nowej, właśnie utworzonej jednokolorowej, ustaw tryb warstwy na „pomnożenie” i scal ją.
    • Na koniec zmień tryb powstałej warstwy na „odejmij” i scal ją z oryginalnym obrazem. Powinno to odjąć oryginalne tło, pozostawiając obraz z czarnym tłem.
  3. Gdybyśmy używali formatu obrazu ze wstępnie pomnożoną alfą, bylibyśmy mniej więcej gotowi. Ale ponieważ nie jesteśmy, nadal musimy rozmnażać kanały RGB. Aby to zrobić, sklonuj warstwę alfa, którą utworzyliśmy w poprzednim kroku (lub po prostu skopiuj ją do schowka), ustaw tryb warstwy na „dziel” i scal ją z warstwą czarnego tła, którą sklonowałeś przed krokiem 2. Wynik powinien wyglądać tak (porównaj z oryginalną wersją czarnego tła, aby zobaczyć różnicę):

    Odmnożone kanały RGB

  4. Teraz dodaj maskę warstwy do powstałej warstwy, wybierz maskę i wklej do niej warstwę alfa. Wynik powinien teraz wyglądać mniej więcej tak, jak oryginalny przezroczysty obraz. Wreszcie, aby zmienić maskę w odpowiedni kanał alfa, możesz ją zastosować (ale eksport PNG GIMP zrobi to za ciebie, nawet jeśli tego nie zrobisz). I gotowe - jeden zrekonstruowany przezroczysty plik PNG gotowy do pracy:

    Zrekonstruowany obraz z przezroczystością

Oczywiście ta technika naprawdę wymaga posiadania wersji obrazu na czystym czarnym i czystym białym tle. Jeśli tła są nieco wyłączone, podobne metody mogą być nadal przydatne, ale może być konieczne wykonanie dodatkowych korekt kolorów, a wyniki mogą nie być tak doskonałe. ( Edycja: patrz dodatki do powyższego kroku 2. Zmienione instrukcje powinny działać z tłem dowolnego koloru, o ile są one jednolite).


Ps. GIMP ma również funkcję „Usuwanie koloru” (jako tryb mieszania dla narzędzia Wypełnianie wiadra lub jako Kolor do alfa ... dla całego obrazu), co jest przydatne do rekonstrukcji przezroczystości, gdy masz tylko jedną wersję obrazu na jednolitym tle koloru. Jednak, jeśli nie zostanie użyty ostrożnie, ma tendencję do tworzenia wyników, które są bardziej przejrzyste, niż byś tego chciał .

Pps. Jeśli bardzo dokładnie porównasz oryginalne i zrekonstruowane obrazy, zobaczysz, że nie są one dokładnie identyczne - niektóre wartości kolorów są wyłączone o około 1/256. Wynika to z tego, jak działa tryb „dzielenia” GIMP- a: zamiast obliczać prawdziwą odwrotność mnożenia alfa, które byłoby wyjściem = (255 × wejście ) / warstwa , tak naprawdę oblicza wyjście = (256 × wejście ) / ( warstwa+ 1). To niedopasowanie, które rzekomo ma być wykonane, aby uniknąć dzielenia przez zero, oznacza, że ​​niektóre kolory mogą zaokrąglić do nieco innej wartości niż powinny. Niestety, nie wiem, jak to zrobić, poza łataniem GIMP, pisaniem wtyczki, aby wykonać podział tak, jak tego chcemy, lub korzystaniem z innego programu. Na szczęście różnica kolorów jest rzadko, jeśli w ogóle, dostrzegalna przez ludzkie oko.

Ilmari Karonen
źródło