Widocznie, chociaż format PNG faktycznie pozwala na dowolne i wszystkie kolory w 8-bitowym indeksowanym kolorze PNG być całkowicie lub częściowo przezroczysty, ImageMagick za „PNG8” format specifier obsługuje tylko 1-bitową przezroczystość w stylu GIF.
Jest możliwe, aby produkować indeksowanych 8-bitowych PNG za pomocą ImageMagick przez nie pomocą PNG8:
specyfikator, ale po prostu za pomocą -colors 256
lub -colors 255
*, aby zmniejszyć liczbę kolorów w obrazie. Niestety, przynajmniej na podstawie moich testów przy użyciu ImageMagick 6.8.9, powstałe obrazy mają dość dziwne i dość niepotrzebnie brzydkie artefakty kwantyzacji kolorów. Na szczęście istnieje znacznie lepsze narzędzie do tej konkretnej pracy: pngquant. Używając go, przekształcając 32-bitowego RGBA PNG do 8-bitowych kolormapowany PNG z minimalną utratą jakości jest tak proste, jak:
pngquant 256 <original.png> output.png
Jako szybki demonstracji, oto prosty obraz testowy (gwiazda z półprzezroczysta cień) w przeliczeniu na 8-bitowym PNG stosując różne metody:
![convert input.png -colors 255 PNG8:output.png ImageMagick convert (-colors 255, PNG8)](https://i.stack.imgur.com/IsbCf.png)
Od lewej do prawej:
- Oryginalne 32-bitowe RGBA PNG
- kwantowane z
pngquant 256 <input.png> output.png
- kwantowane z
convert input.png -colors 255 output.png
*
- kwantowane z
convert input.png PNG8:output.png
- kwantowane z
convert input.png -colors 255 PNG8:output.png
*
*) W komentarzach poniżej, sugeruje się, że -colors 255
jest konieczne „aby zarezerwować jeden wpis dla«background»koloru.” Na podstawie moich testów nie zauważyłem, że tak rzeczywiście jest; używanie -colors 256
będzie nadal produce an 8-bit colormapped PNG, z artefaktami kwantyzacji jakościowo podobne, ale różniące się szczegółowo, z wyjściem z -colors 255
. Niemniej jednak, aby grać bezpiecznie, użyłem -colors 255
dla powyższych przykładów. Zmniejszenie rozmiaru mapy barw o jeden kolor nie powinno samo w sobie istotnie wpłynąć na jakość wyników, ponieważ test z pngquant 255
będzie .
Powiązane: http://stackoverflow.com/questions/1468221/can-you-force-imagemagick-to-use-png-8-alpha-transparency –
To pytanie nie jest duplikatem. Ten plakat narzeka na utratę półprzezroczystych pikseli po konwersji z 24-bitowego na 8-bitowy.Ma już (poprawną) składnię do konwersji z 24-bitowego na 8-bitowy, zastanawia się, dlaczego zachowuje się tak jak on (i jest na to dobra odpowiedź). –