Pngyu - program do kompresji PNG [tłumaczenie PL]

Jeśli chcesz podzielić się swoimi materiałami z innymi użytkownikami forum.

Moderatorzy: GameBoy, Dragon Kamillo

ODPOWIEDZ
Awatar użytkownika
Surusek
Posty: 87
Rejestracja: 02 gru 2017, 11:32
Lokalizacja: Gdańsk
Kontakt:

Pngyu - program do kompresji PNG [tłumaczenie PL]

Post autor: Surusek »

Pngyu
program do stratnej kompresji PNG


Wprowadzenie
Stratna kompresja PNG. Ta cudowna technika pozwala na zmniejszenie wagi obrazka, bez straty przezroczystego tła i dużych strat na jakości. Ten program pozwala na nieskomplikowaną kompresję takiego obrazka - w zasadzie za pomocą kilku kliknięć myszą.

Nieco o programie i o tłumaczeniu
Autorem programu jest NukeSAQ88. Program został udostępniony na licencji BSD (rev.), która pozwala za darmo wrzucać go gdzie się chce, modyfikować i robić całą masę innych rzeczy... Ale muszę wam wysłać długi i nudny załącznik, macie go tutaj [klik!]
Autorem tłumaczenia na język polski jestem ja (almostnoruby).
Po ściągnięciu i rozpakowaniu programu (do tego jest potrzebny darmowy program 7-ZIP albo inny, który potrafi go otworzyć), są dostępne dwie wersje programu: Pngyu_EN.exe oraz Pngyu_PL.exe. Ta pierwsza, to oryginalna angielska wersja, w razie gdyby coś się krzaczyło w drugiej - spolszczonej wersji.
Uwaga! Oryginalne pliki domyślnie po kompresji zostają nieodwracalnie zamienione na te skompresowane! Więcej o tym w drobnej instrukcji niżej.

Skuteczność działania (przykładowe obrazki)
Spoiler:
Screeny
Spoiler:
Drobna instrukcja, gdzie co jest
Spoiler:
Pobierz
Mirror 1 (PCloud) - [klik!]
Mirror 2 - [klik!]
Oryginalne źródło (tylko angielska wersja): [klik!]
Strona twórców biblioteki kompresującej pliki (zawiera program w wersji na terminal systemowy): [klik!]

/edit/ [=> kvachu] Dodano obrazki ilustrujące działanie programu, uzupełniono post o kilka linków, [=> Dragon Kamillo] dodano informację o działaniu ditheringu na rozmiar pliku
Ostatnio zmieniony 14 sty 2020, 22:33 przez Surusek, łącznie zmieniany 1 raz.
...line of code that the developer can write the fastest, the line of code that developer can maintain the cheapest, and the line of code that never breaks to the user is the line of code that developer never had to write - Steve Jobs

Previously known as almostnoruby/anrgames
[twitter] [youtube]
Awatar użytkownika
kvachu
Posty: 765
Rejestracja: 15 kwie 2006, 11:46

Re: Pngyu - program do kompresji PNG [tłumaczenie PL]

Post autor: kvachu »

Nie ściągałem i raczej nie ściągnę, ale po opcjach i opisie widzę, że ten program chyba nie ma nic czego irfanView nie ma czy też mój forever ulubiony Paint Shop Pro 9.
Z mojego doświadczenia wiem, że wszystko rozbija się o ilość kolorów, a właściwie o format w jakim jest plik zapisany. 4BPP(8 kolorów), 8BPP(256 kolorów) itd.

Weźmy dla przykładu poniższy obrazek
Obrazek

Liczba kolorów - 16.
Zapisany w formacie 24BPP(min 32K kolorów, max chyba 16 milionów kolorów) Będzie miał 4.70 KB.
8BPP(256) - 2.24 KB
4BPP(16) - 1.87 KB

Takie wyniki dał mi wspomniany wcześniej PSP9.
Według mnie dithering w grafikach gier opartych na pixelarcie to blasfemia i takiej opcji autor nawet nie powinien tam dodawać, szczególnie jeśli weźmiemy pod uwagę, że autor tego softu napisał go specjalnie dla użytkowników różnego rodzaju makerów.

Następną bardzo ważną kwestią jest jakość kompresji. Patrząc na kotka w przykładzie który pokazał autor tematu wygląda to na moje oko wręcz tragicznie.
Pozwoliłem sobie skompresować również kotka z 24BPP do 8BPP w PSP9 i według mnie wygląda to dość porządnie.
Obrazek

Nie wiem jak wy, ale ja na główce kotka nie widzę prawie różnicy.
Orig(lewy kotek) - 128 KB
po kompresji(prawy kotek) - 38,3 KB

Ja oczywiście nigdy bym nie zamienił PSP9, na ten nowy program, ale nie zaszkodzi go pokazać, bo nie każdy będzie chciał szukać np PSP9, ale darmowy Irfan powinien zrobić również porządną robotę.
Awatar użytkownika
Dragon Kamillo

Golden Forki 2016 - Pełne Wersje (miejsce 3); Golden Forki 2013 - Zapowiedzi (zwycięstwo); Liga Mapperów Sezon IV (miejsce 2)
Posty: 1948
Rejestracja: 18 paź 2009, 21:23
Lokalizacja: Poznań/Granowiec

Re: Pngyu - program do kompresji PNG [tłumaczenie PL]

Post autor: Dragon Kamillo »

Kvachu wydaje mi się że chyba nie zrozumiałeś co robi ten program (no chyba że PSP9 też potrafi to co napiszę poniżej, Infran Fiew tego NIE POTRAFI).
A chodzi o redukcję barw z zachowaniem przeźroczystości (KANAŁU ALPHA), normalnie większość programów graficznych po prostu zamienia go na jakiś kolor tła, a tak na prawdę pliki png mogą mieć go zapisane w palecie barw i wykorzystywać normalnie w obrazku. Oczywiście jest to jakiś efekt uboczny tego że w plikach png na każdą barwę w palecie są przeznaczone cztery bajty (RGB i jeden zwykle nieużywany) co pozwala zapisać w nim stopień przeźroczystości (w BMP już tak się nie da). Przez to też nie wszystkie programy będą te półprzeźroczystości widzieć (bo to nie jest coś powszechnego), ale makery akurat sobie z tym radzą (nawet 2k3, ale tam oczywiście półprzeźroczystości zostaną zignorowane). Więcej + przykład tilesetu z RMXP: viewtopic.php?f=4&t=5888#p65719

Dalej: Co do kotka - no przykład anrgamesa to redukcja do 4bit, nie 8, więc nic dziwnego że twój przykład lepszy XD, zredukuj go do 16 barw to pogadamy.
Awatar użytkownika
Jazzwhisky
Posty: 4332
Rejestracja: 13 kwie 2006, 21:45
Kontakt:

Re: Pngyu - program do kompresji PNG [tłumaczenie PL]

Post autor: Jazzwhisky »

PSP9 jest śmieszny, bo dla odmiany potrafi dokonać takiej redukcji barw w zakresie wewnętrznej palety 16-bit oraz 15-bit (32768 kolorów), z ditheringiem lub bez, przy czym wynik zapisze w tradycyjnym 32-bitowym (24+alpha) .png. Tak jak Irfan, nie poradzi sobie jednak z zapisywaniem kanału alpha dla plików z indeksowanymi kolorami. Można więc powiedzieć, że oba programy uzupełniają się możliwościami, co w sumie jest całkiem zabawne. :)
Nasz discordowy czat, 24h/d - https://discord.gg/4GG85kr
Awatar użytkownika
kvachu
Posty: 765
Rejestracja: 15 kwie 2006, 11:46

Re: Pngyu - program do kompresji PNG [tłumaczenie PL]

Post autor: kvachu »

Ok, odpaliłem ten program i się nim trochę pobawiłem. Nawet wsadziłem do swojego projektu jeden tileset przekonwertowany i jest wszystko ok. Tileset został odchudzony o połowę i nie widać za bardzo straty jakości(jeśli w ogóle jakaś jest). Zmuszony jestem zmienić zdanie o 180 stopni i przyznać, że ten programik może być dość przydatnym narzędziem, szczególnie jeśli mniejsze rozmiarem tilesety mają choćby najmniejszy wpływ na przyśpieszenie/nie spowalnianie gry.
Podejrzewam, że mniejsze pliki raczej wpływają pozytywnie na performance, ale czy ktoś może mnie w tym utwierdzić na 100%? Bo jeśli tak, to coś czuję, że ja i ten programik się mocno zaprzyjaźnimy w najbliższym czasie.
Awatar użytkownika
Adrap

GF2020 - Dema (miejsce 3); GF2019 - Pełne Wersje (miejsce 3) Zapowiedzi (zwycięstwo); GF2017 - Pełne Wersje (miejsce 3)(miejsce 3); GF2015 - Dema (miejsce 2) Zapowiedzi (zwycięstwo); KC I (miejsce 2); KC II (miejsce 3); TASC 4 (miejsce 2)(miejsce 3)
Posty: 815
Rejestracja: 21 kwie 2014, 14:39
Lokalizacja: Kurpsie

Re: Pngyu - program do kompresji PNG [tłumaczenie PL]

Post autor: Adrap »

kvachu pisze:Podejrzewam, że mniejsze pliki raczej wpływają pozytywnie na performance, ale czy ktoś może mnie w tym utwierdzić na 100%? Bo jeśli tak, to coś czuję, że ja i ten programik się mocno zaprzyjaźnimy w najbliższym czasie.
No mniejsze pliki, to zdecydowanie mniej do załadowania i przetworzenia dla programu, więc na pewno wpływa pozytywnie. W takim XP wielkość tilesetu robiła ogromne znaczenie podczas przenoszenie się z mapy na mapę. Jak ktoś upchał kilka tilesetów w jeden to mi lagowało nawet do 2 sekund.
Wydane:
Podziemia: Człowiek, 23 sekundy, Królobójcy, Najstarszy

Współautor gry: Amarok
(W produkcji)
Awatar użytkownika
Jazzwhisky
Posty: 4332
Rejestracja: 13 kwie 2006, 21:45
Kontakt:

Re: Pngyu - program do kompresji PNG [tłumaczenie PL]

Post autor: Jazzwhisky »

Jeszcze dodam, że o ile program jest fajny dla pewnych dosyć specyficznych rozwiązań, to nieco zawahałabym się przy wykorzystywaniu go dla sprajtów itp. pixelartowych grafik w RM. Jest to jednak kompresja stratna, m.in. przez obniżanie ilości i doboru barw (zmodyfikowany algorytm median cut) i ew. dithering, nastąpią więc pewne zniekształcenia, zależne od skali "kompresji", a także widoczne porównawczo, jeśli więcej niż jeden tileset/spriteset wykorzystywał początkową taką samą/podobną paletę. Anyway, nadal, jest to prawdopodobnie najlepszy program do redukcji barw, zwłaszcza na nasze potrzeby, zachowanie kanału alpha to jedno, ale sam algorytm wykorzystujący bibliotekę pngquant też stawia go ponad wszystkim innym, co popularne i dostępne na rynku.
Nasz discordowy czat, 24h/d - https://discord.gg/4GG85kr
Awatar użytkownika
Dragon Kamillo

Golden Forki 2016 - Pełne Wersje (miejsce 3); Golden Forki 2013 - Zapowiedzi (zwycięstwo); Liga Mapperów Sezon IV (miejsce 2)
Posty: 1948
Rejestracja: 18 paź 2009, 21:23
Lokalizacja: Poznań/Granowiec

Re: Pngyu - program do kompresji PNG [tłumaczenie PL]

Post autor: Dragon Kamillo »

Nie no, skoro obrazek przed redukcją barw miał te max 256 kolorów, to nic stratnego tu nie ma. A kompresja nadal jest:
Obrazek
Po lewej po kompresji, po prawej oryginał.

A jeśli chodzi o zniekształcenia barw - no to zawsze można je przywrócić do starych kiedy takie zniekształcenie nastąpiło (tylko uwaga nie może spaść ich ilość między oryginałem, a zredukowanym plikiem) - nie wiem czy programy do edycji palet zachowają kanał alpha, ale na siłę można nawet to przerobić w pierwszym lepszym hex edytorze, wystarczy wyłapać zniekształcone kolory w palecie i wklepać wersje z przed redukcji.

Sama kompresja polega też na tym że po prostu kolorów jest mnie więc mogą być zapisane w dłuższych ciągach (dithering będzie zwiększał wagę pliku zawsze w porównaniu z wersja bez niego), inaczej nawet bez sensu by było dawać inne opcja jak 256 i 16 kolorów - bo każda ilość od 17 wzwyż i tak musi być zapisana w palecie 8 bit (z resztą kolorów po prostu nie używaną w samej grafice). Idąc więc dalej o wiele bardziej opłaca się już zejść od razu do 16, zamiast np upierać się na 20.

Zawsze można próbować różnych sztuczek i ustawień, ale jestem pewien że wszystkie retro grafiki (czy ripy jakich np używa kfachu) da się w ten sposób bezstratnie skompresować i dzięki temu że program zostawia przeźroczystość używać w każdym RMie (tylko w 2k/3 trzeba się trzymać ściśle 256 kolorów, reszta makerów (nawet 95 tylko że tu BMP) łyka spokojnie i grafiki 4bitowe i 1bitowe (ale tu sam zapis wymusza od razu kolory czarny i biały)).
Awatar użytkownika
Jazzwhisky
Posty: 4332
Rejestracja: 13 kwie 2006, 21:45
Kontakt:

Re: Pngyu - program do kompresji PNG [tłumaczenie PL]

Post autor: Jazzwhisky »

Nie no, rozumiem, naturalnie nie pisałem o opcji ew. bezstratnej kompresji, tylko raczej o ryzyku związanym z zabawą suwakami, nie wszyscy ogarniają niuanse palet, bitów i opcji, a wiele grafik/sprajtów z nowych Makerów nie mieści się zwyczajnie w palecie 256 kolorów, stąd kompresja zawsze będzie odbywać się kosztem utraty i zniekształcenia barw. A co do opcji kompresji ściśle bezstratnej, to trochę inna dyskusja, bo jak napisałem - ten soft jest świetny, ale też akurat to potrafi wiele innych programów, np. wspomniany IrfanView. No i ten ogromny rozmiar pliku po prawej to głównie kwestia tego, że program, w którym został zapisany .png jest biedny (ew. celowo ustalono w nim kompresję na niską, dla szybszego przetwarzania/zapisu). Anyway, co do samych spostrzeżeń, pełna zgoda. :)
Nasz discordowy czat, 24h/d - https://discord.gg/4GG85kr
Awatar użytkownika
Surusek
Posty: 87
Rejestracja: 02 gru 2017, 11:32
Lokalizacja: Gdańsk
Kontakt:

Re: Pngyu - program do kompresji PNG [tłumaczenie PL]

Post autor: Surusek »

@kvachu, obrazek z kotkiem miał ilustrować pojęcie ditheringu, a nie przykład tego, jak program kompresuje dany obrazek. Ale trafne spostrzeżenie - obrazki ilustrujące skuteczność działania powinny być poście.
Już dodaję :-D . I dwa,
kvachu pisze:Według mnie dithering w grafikach gier opartych na pixelarcie to blasfemia i takiej opcji autor nawet nie powinien tam dodawać, szczególnie jeśli weźmiemy pod uwagę, że autor tego softu napisał go specjalnie dla użytkowników różnego rodzaju makerów.
Jestem tylko autorem tłumaczenia, nie całego softu :lol: a to, że autor pochodzi z Japonii, nie znaczy, że pisał go dla RPG Makera, ofc.
anrgames pisze:Autorem programu jest NukeSAQ88. [...] Autorem tłumaczenia na język polski jestem ja (almostnoruby).
...line of code that the developer can write the fastest, the line of code that developer can maintain the cheapest, and the line of code that never breaks to the user is the line of code that developer never had to write - Steve Jobs

Previously known as almostnoruby/anrgames
[twitter] [youtube]
Awatar użytkownika
kvachu
Posty: 765
Rejestracja: 15 kwie 2006, 11:46

Re: Pngyu - program do kompresji PNG [tłumaczenie PL]

Post autor: kvachu »

@Jazzwhisky, Dragon Kamil
Zniekształceń barw w moim tilesecie nie ma w ogóle. Ma on 200 kolorów i po kompresji jest dokładnie to samo. Oczywiście przy użyciu quality na suwaku, a na speedzie natomiast ilość kolorów wyniosła 199 i były ciut przyciemnione. Jeszcze jedna zmiana jaka jest na speedzie, to rozmiar obrazka jest większy.

@anrgames
Zignoruj mój pierwszy post. Wracam po kilku latach do tego całego bajzlu i moge czasem pisać głupoty. Program zacny i dzięki za wywęszenie go.
ODPOWIEDZ