Konwerter obrazu na tekst to program zamieniający piksele w pliku graficznym na tekst wyrażony znakami ascii w notatniku. Co prawda taka aplikacja nie ma zbyt wielu zastosowań, ale stanowi miłe, krótkie ćwiczenie w operowaniu na obrazie oraz plikach. Dla przykładu tak wygląda działanie omawianego programu.
Dla przykładu tak wygląda działanie omawianego programu:
Dobrze, jak więc się do tego zabrać?
Potrzebujemy:
- funkcji do wyczytania koloru pojedynczego piksela.
- wzoru na wyznaczenie jaskrawości.
- algorytmu do zmiany grupy pikseli na znaki z uwzględnieniem rozdzielczości oraz z jednoczesnym zapisem do pliku tekstowego.
Funkcja do wyczytania koloru pojedynczego piksela – będzie ona zwracać tablice z kolorami poszczególnych pikseli. Jako, że nie ma tu za dużo myślenia pozwolę sobie na pokazanie Ci po prostu jak tego dokonać.
Wzór na wyznaczenie jaskrawości – no to już nie będzie takie proste. Musimy zagłębić się nieco w teorię, by wiedzieć jak dokładnie ma on wyglądać.
Zmienna kolor operuje w formacie RGB w którym każda z liter odpowiada poziomowi barw: czerwonego, zielonego i niebieskiego. W modelu tym wartość 0 oznacza brak danej składowej, natomiast 255 pełną jej zawartość. Nie interesują nas jednak konkretne barwy. Nam potrzebna będzie jaskrawość piksela. Jak więc ją otrzymać? Po skorzystaniu z pomocy niezawodnego programu do grafiki MS Paint oraz otworzeniu w nim okna do edytowania kolorów po prawej stronie naszym oczom ukaże się pasek który przedstawia to czego szukamy
Po chwili zabawy dostrzec można pewną prawidłowość. Mianowicie jedynie najmniejsza i największa wartość ma wpływ na jaskrawość koloru. Na tej podstawie jesteśmy w stanie stworzyć wzór który pozwoli nam osiągnąć swój cel.
Jaskrawość przedstawiliśmy w procentach. Jako, że wartości mają taki sam wpływ na wynik to operują jedynie na pięćdziesięciu procentach, a dopiero ich suma daje nam oczekiwany rezultat.
Algorytm do zmiany grupy pikseli na znaki z uwzględnieniem rozdzielczości oraz z jednoczesnym zapisem do pliku tekstowego
– czas na ostatni etap naszej aplikacji. Teraz wystarczy jedynie stworzyć tablicę znaków w kolejności odpowiadającej jaskrawości pikseli i przeskanować całą bitmapę wpisując je do pliku tekstowego. Rozdzielczość uwzględnimy grupując piksele, by następnie wyciągnąć z nich średnią. Zrobimy to za pomocą zagnieżdżonych pętli for – dokładnie czterech.
Tak wygląda gotowa aplikacja:
Tak jak mówiłem wcześniej – mimo że aplikacja ma niecałe sześćdziesiąt linijek to jest naprawdę przyjemnym i pouczającym ćwiczeniem w którym matematyka odegrała kluczową rolę, No i dodatkowo możemy się teraz chwalić tekstowym Chuck’iem Norris’em. Wersję zawierającą interface graficzny znajdziesz na moim Git Hub’ie, a tymczasem dziękuję Ci za lekturę zamieszczonych przeze mnie artykułów.