[PL]Własny format pliku graficznego w C++ #2 - #informatycznie

in #polish6 years ago

Hej!
Post ten jest kontynuacją tego postu: https://steemit.com/polish/@kappucino/pl-wlasny-format-pliku-graficznego-w-c-informatycznie

Prace nad programem konwertującym BMP do GMD i z GMD do BMP trwają :) Po skończeniu program pojawi się jako open-source na githubie/utopian.io, może ktoś skorzysta :)

Co już jest?

  • Wczytywanie BMP
  • Wczytywanie GMD
  • Zapis BMP
  • Zapis GMD
  • Konwersja BMP do 8-stopniowej skali szarości
  • Konwersja BMP do 8 kolorów narzucanych przez format GMD
  • Proste menu

Co zostało do zrobienia?

  • Kompresja LZW
  • Zapis kolorów dedykowanych dla danego obrazka
  • Usprawnienie kodu odpowiadającego za wczytywanie BMP
  • Usprawnienie zapisu GMD

Konwersja 16,777,216 kolorów do 8
Mój format obsługuje tylko 8 kolorów w dwóch trybach:

  • Kolory dedykowane dla danego obrazka,
  • Kolory narzucone przez format GMD.
    Z kolorami narzuconymi przez format GMD poradziłem sobie korzystając z prostego równania:
((GMDColors[i].R - kolor.R)*(GMDColors[i].R - kolor.R) + (GMDColors[i].G - kolor.G)*(GMDColors[i].G - kolor.G) + (GMDColors[i].B - kolor.B)*(GMDColors[i].B - kolor.B))

Gdzie GMDColors to tablica kolorów narzuconych, a kolor to kolor danego piksela. Równanie się sprawdza, działa dobrze, więc nie myślałem nad innymi sposobami, ale może ktoś jakieś zna?
Zastanawiam się też czy w przypadku wybierania kolorów dedykowanych dla danego obrazka dobrym sposobem będzie zliczanie wszystkich kolorów i wybranie ośmiu najczęściej występujących? Ewentualnie odrzucenie podobnych do siebie lub zgrupowanie ich w jeden?

Będę wdzięczny za wszelką pomoc :) Dzięki za przeczytanie! :)

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.034
BTC 64058.80
ETH 3150.15
USDT 1.00
SBD 3.99