Mam problem z tym, jak Photoshop obsługuje całkowicie przezroczyste piksele podczas eksportowania jako PNG, co oznacza, że kanały kolorów czerwonego, zielonego i niebieskiego dowolnych całkowicie przezroczystych pikseli są zapisywane jako 0 zamiast koloru zdefiniowanego w Photoshopie .
Na przykład: Mam plik PSD z maską warstwy. Niektóre kolorowe fragmenty obrazu są całkowicie przezroczyste przez maskę warstwy, ale nadal chcę, aby oryginalne kanały kolorów były zapisywane w pliku PNG zamiast tylko 0.
(Tak, sama PNG ma zawierać dane RGB nawet całkowicie przezroczystych pikseli. Jest to problem, z Photoshopa, a nie PNG).
Jeśli zastanawiasz się, dlaczego posiadanie danych koloru ma znaczenie, gdy piksel jest całkowicie przezroczysty, oto kilka przykładów użycia:
- PNG jest próbkowany w wyższej rozdzielczości niż jest zapisywany, a próbkowane wartości są interpolowane między sąsiednimi pikselami. Może to powodować słabą czarną „aureolę” wokół obrazu, jeśli interpolacja nie jest ważona przez przezroczystość. (W moim przypadku próbkowanie w górę odbywa się na GPU, który ze względu na wydajność nie ma wpływu na przezroczystość).
- Kanały czerwony, zielony, niebieski i alfa w pliku PNG są wykorzystywane do celów innych niż przechowywanie informacji o kolorze. (W moim przypadku używam wszystkich czterech kanałów do przechowywania danych potrzebnych do obliczeń oświetlenia w czasie rzeczywistym).
Dzięki za pomoc!
EDYTOWAĆ
Spróbuję wyjaśnić problem, który mam z użyciem pomocy wizualnych. Pokazywanie przezroczystych rzeczy jest trudne, ale mam nadzieję, że to wyjaśnia mój problem:
Mam plik PSD z jedną warstwą i maską warstwy. Warstwa kolorów wygląda następująco:
Jego maska warstwy wygląda następująco:
Jeśli wyeksportuję ten plik PSD jako PNG, otrzymam to:
(Białe obszary są rzeczywiście przezroczyste; wyglądają po prostu na białym tle).
Być może zastanawiasz się: na czym polega problem? To wygląda dobrze! Problem polega na tym, że informacje o kolorze są przechowywane w tych przezroczystych pikselach. Używając narzędzia do usuwania danych krycia z PNG, pozostawiając nienaruszony RGB, możemy zobaczyć informacje o kolorze, które Photoshop zapisuje do przezroczystych pikseli:
Jak widać, Photoshop zastąpił informacje o kolorze w przezroczystych pikselach kolorem czarnym. Natomiast po usunięciu danych nieprzezroczystości z pliku PNG chcę, aby wyglądał dokładnie jak oryginalna warstwa kolorów: