ImageMagick: Mocna kompresja plików PNG

0

Witam,

Mam na dysku plik 800x600 w formacie BMP. Teraz chcaiłbym ImageMagickiem mocno skompresować go (oczywiście ze stratą jakości) do formatu PNG. Próbowałem na różne sposoby:

convert -dither -compose xor -treedepth 8 -colors 16 screen.bmp screen.png

Ale nie mogę otrzymać wielkości mniejszej niż 40KB (przy 16 kolorach), tymczasem uzywając manualnie Adobe Photo Elements jestem w stanie skompresować obrazek aż do 23KB (przy 8 BPP)

Wie ktoś może w jaki sposób można mocniej skompresować image używając IM?

0

convert nie ma wielu opcji kompresji i w ogole kompresje ma marna. przykladowo balilem sie nim i jpgami zmniejszajac rozmiar x i y dworotnie (powierzchnia 4 krotnie) a plik wynikowy wychodzil tego samego rozmiaru co oryginal. jpg-i trzeba kompresowac dodatkowo.

0

Aha, hmm, to jaki inny program możecie mi polecić? Oczywiście uruchmialny z linii komend...

0

Jest problem [green]
PNG używa kompresji bezstratnej. Nie da się zmienić jego rozmiaru, jest [powinien być - teoretycznie] zawsze jeden dla jednego obrazu [pomijam opcje typu Interlaced].

0
Marooned napisał(a)

Jest problem [green]
PNG używa kompresji bezstratnej.

Jest jeszcze jeden problem. PNG obsługuje oba typy kompresji - stratnej i bezstratnej. :)

0
Malcolm napisał(a)

Jest jeszcze jeden problem. PNG obsługuje oba typy kompresji - stratnej i bezstratnej. :)
Udowodnij.
http://en.wikipedia.org/wiki/PNG <-- PNG nie obsługuje kompresji stratnej.

0

Więc może program "obcina" trochę kolorków?

0
Marooned napisał(a)

Udowodnij.
http://en.wikipedia.org/wiki/PNG <-- PNG nie obsługuje kompresji stratnej.

Człowieku, ja ci nic nie musze udowadniać. Bana masz na google?

// do ponizszego
Niech bedzie, poddaje sie. Pewnie tylko mi google zwracaja wyniki na zapytanie "png lossy compression" ;)
Wystarczy zastosowac kwantyzacje, ktora to libpng obsluguje lub lekko zmieniony algorytm kompresji i juz mamy png ze stratna kompresja. Nie mowie tu o zadnych sztuczkach. Faktycznym zalozeniem algorytmu byla kompresja bezstratna, mimo tego format png nie wyklucza kompresji stratnej. Oprogramowalem takie cudo jakies 2 tygodnie temu i nawet dziala ;]
BTW: Pewnie tez nikt z was nie widzial formatu JPG z bezstratna kompresja ?

0

http://www.libpng.org/pub/png/spec/1.1/PNG-Rationale.html

PNG (Portable Network Graphics) Specification, Version 1.1 napisał(a)

There is no lossy compression in PNG.

To, że istnieją sztuczki, pozwalające zyskać na rozmiarze poprzez stratę jakości obrazu, nie oznacza, że format posiada stratną kompresję. Patrząc w ten sposób: GIFa też możesz rozmyć, co pozwala na lepszą kompresję, ale nie jest to cecha formatu tylko konwersji. GIF jest bezstratny. Myślę, że powyższy cytat z specyfikacji formatu Cię przekona.

Popatrz na JPG - tam stratność nie wynika z faktu, jak wstępnie, sztucznie obrobisz obraz przed zapisem. Tam obraz jest zapisywany w taki sposób, że nie przypomina postaci bitmapy wprost skompresowanej, a za to jest potraktowany transformatą fouriera, od której dokładności zależy kompresja.

1 użytkowników online, w tym zalogowanych: 0, gości: 1