******** ELU TU IDÂ WSZYSTKIE OBRAZKI ********** PRZEKSZTAÎCANIE OBRAZU W ostatnim roku nastâpiî burzliwy rozwój kompaktów. Posiadacze czytników CD-ROM zostali wrëcz zasypani srebrzystymi krâûkami. Na takich kompaktach moûna znaleúê mnóstwo ciekawych i îadnych obrazków public domain. I bardzo dobrze. Niestety, wiëkszoôê tego typu kompaktów pochodzi z peceta. Wszystkie czytniki amigowskie potrafiâ je przeczytaê, gorzej jest jednak z wyôwietleniem takich obrazków na ekranie lub z wykorzystaniem ich do wîasnych celów. Adam Nowak W Magazynie AMIGA sporo mówi sië o Scali, Deluxe Paint czy ImageFX. Sâ to wszystko doskonaîe programy, jednak nie potrafiâ wykonaê niektórych operacji w zakresie przeksztaîcenia obrazu, które stajâ sië w takiej sytuacji niezbëdne. Postanowiîem zatem zapeîniê të lukë, przedstawiajâc efekty moich dîugoletnich zabaw z programem Art Department Professional. Na poczâtek omówimy sobie rzecz podstawowâ, czyli sprowadzanie takich obrazków do postaci "zjadliwej" dla Amigi. Zacznë od ostrzeûenia: ADPro nie jest, niestety, programem "dla kaûdego", ma bowiem swoje wymagania pamiëciowe. Absolutne minimum to 2 MB RAM, a im wiëcej, tym lepiej. ADPro jest taki pamiëcioûerny, bo wykorzystuje jedynie "ciâgîâ" pamiëê Amigi (contigous memory), a i to nie caîâ tylko o 128 KB mniej niû jest takiej pamiëci. Moûe sië zatem zdarzyê, ûe nawet dysponujâc 10 MB pamiëci, moûe nam jej nie wystarczyê, gdy bëdzie poszarpana. Z tego powodu uûytkownicy ADPro na Amigach o maîej iloôci pamiëci powinni przed wczytaniem tego programu zresetowaê komputer i wczytaê program do tak "wyczyszczonego" RAM-u. Sâ jeszcze inne sposoby na zmniejszenie pamiëcioûernoôci komputera, ale o nich powiemy sobie póúniej. Teoretycznie moûna sobie wyliczyê iloôê potrzebnej dla ADPro pamiëci ciâgîej ze wzoru: szerokoôê * wysokoôê * 4 Oznacza to, ûe aby wczytaê kolorowy obrazek o wymiarach 1024 x 768 pikseli (jeden z najpopularniejszych formatów pecetowych), bëdzie nam potrzebne 3,14 MB, natomiast na obrazek 640 x 480 pikseli (inny popularny format pecetowy) wystarczy 1,23 MB. Jeôli zrezygnujemy z koloru i bëdziemy obrabiaê obrazki czarno-biaîe, wówczas wystarczâ nam iloôci o poîowë mniejsze. To jednak nie wszystko. Wspomniana pamiëê musi byê pamiëciâ typu Fast. Mile widziany jest takûe koprocesor. Nie jest on jednak niezbëdny, bo wymagajâ go jedynie niektóre, mniej waûne, opcje programu. Pozostaîe zaô, a zwîaszcza te, o których bëdziemy mówiê, dziaîajâ, tyle ûe nieco wolniej. Nie gra natomiast roli system operacyjny naszej Amigi. Program wykona wszelkie operacje, na jakie pozwoli mu pamiëê, jedynie wynik swojego dziaîania nie zawsze bëdzie mógî wyôwietliê. Wszystkie operacje wykonamy na identycznym obrazku (rys. 1.). Byê moûe nie bëdzie to najciekawsze z punktu widzenia "ilustracyjnego", pozwoli jednak na porównanie wyników dziaîania poszczególnych operacji, dziëki czemu bëdzie moûna uniknâê bîëdów przy przeksztaîcaniu obrazka w przyszîoôci. Do eksperymentów wybraîem obrazek BumpyPots. Jest on zapisany w formacie graficznym JPEG na jednym z kompaktów z serii CDPD Almathery. Zakîadamy, ûe bëdziemy chcieli ten obrazek przeksztaîciê na format IFF o wymiarach 640 * 512 pikseli. Aby zrobiê cokolwiek z obrazkiem, naleûy go najpierw zaîadowaê. W tym celu, po uruchomieniu programu ustalamy najpierw format graficzny, w jakim ma byê îadowany rysunek. ADPro daje nam moûliwoôê wyboru wielu tzw. loaderów, czyli sterowników dla formatów graficznych. Osobiôcie korzystam z najwygodniejszego z nich, o nazwie UNIVERSAL, który w trakcie îadowania automatycznie rozpoznaje format obrazka. Moûemy takûe wybraê "loader" bezpoôredni (w naszym wypadku JPEG), ale po co mëczyê sië tym, co moûe wykonaê komputer. Zwîaszcza ûe ADPro w odróûnieniu od innych podobnych programów ma pewnâ cechë. Zapamiëtuje on bowiem wszystkie ustawienia, nawet po wyjôciu z programu. Preferencje zapisane sâ w zbiorze ADProDefaults. Jest to czasami niewygodne, na przykîad wtedy, gdy po wyjôciu z ADPro skasujemy katalog, na którym ostatnio pracowaliômy, niemniej czasem sië przydaje. Aby ustawiê "loader", klikamy na pole znajdujâce sië na prawo od napisu LOAD, po prawej stronie menu, a z requestera, jaki sië pojawi (rys. 2.), wybieramy potrzebny nam loader, klikajâc na jego nazwë. Requester ten ma parë gadûetów, których znaczenie warto znaê. Sâ to kolejno: MRU -- jeôli ta opcja jest wîâczona, wówczas nazwa, na której klikniëto, zostanie przesuniëta na poczâtek listy; Sort -- sortuje nazwy "loaderów" alfabetycznie; Accept and load -- zatwierdza wybór "loadera" dla formatu i powoduje pojawienie sië kolejnego requestera, z którego moûemy wybraê nazwë îadowanego obrazka; Accept -- zatwierdza nasz wybór bez îadowania obrazka; Cancel -- powoduje powrót do gîównego menu. UWAGA: W programie jest drobny bug. ADPro pamiëta bowiem tylko te zbiory z danego katalogu, które byîy tam w momencie uruchomienia programu. A zatem, jeôli coô w miëdzyczasie zapiszemy, nazwa tego zbioru nie pojawi sië na liôcie. Na szczëôcie, jeôli chcielibyômy zapisaê coô ponownie pod tâ "niewidocznâ" nazwâ, zostaniemy ostrzeûeni. My na razie skorzystamy z opcji ACCEPT, przez co powrócimy do gîównego menu. Wypadaîoby teraz ustawiê takûe "saver". W identyczny sposób (klikajâc na pole po prawej stronie napisu SAVE) wybieramy format IFF i, akceptujâc go, wracamy ponownie do gîównego menu. Pozostaîe parametry przeksztaîcanego obrazka, jakie naleûy ustawiê, znajdujâ sië poniûej w grupie nazwanej SCREEN CONTROLS (rys. 3.). Sâ to kolejno: Rozdzielcz -- okreôla rozdzielczoôê obrazka, jaki chcemy uzyskaê (do wyboru jest niska i wysoka rozdzielczoôê, a jeôli nasza Amiga ma takie moûliwoôci, takûe i super hires. Rozdzielczoôci te odnoszâ sië wyîâcznie do obrazków w trybie IFF, sterowniki dla pecetowych formatów graficznych uwzglëdniâ bowiem pecetowe rozdzielczoôci.) Rozm. 1 (do wyboru wielkoôê standardowa i overscan) -- okreôla domyôlnie przyjëtâ szerokoôê obrazka. Nie naleûy sië tym za bardzo przejmowaê, jeôli bowiem chcemy sobie przeksztaîciê obrazek na wymiar, powiedzmy 589 x 324 pikseli, to ADPro i tak nam to zrobi, bez wzglëdu na to, co bëdzie ustawione w tej rubryce. Monit. -- okreôla typ monitora, na jakim ma byê wyôwietlany obrabiany obrazek. Przep. -- pozwala wîâczyê (LACE) lub wyîâczyê (NOLACE) przeplot. W odróûnieniu od ustawieï przy "Rozm" ten parametr jest waûny, zawsze bowiem bëdzie brany pod uwagë, zarówno przy wyôwietlaniu, jak i przy obróbce rysunku. Rozm. 2 -- okreôla wysokoôê obrazka. Pozostaîe uwagi jak do Rozm. 1. WD -- oznacza wielkoôê ditheringu (domyôlnie 32). Dithering -- okreôla typ zastosowanego ditheringu. (O ditheringu powiemy sobie nieco póúniej) Pole na prawo od napisu "Colors" -- okreôla, ile kolorów ma mieê obrazek po przetworzeniu. Podobnie jak parametr "Przep" naleûy tu od razu ustawiê wîaôciwâ liczbë kolorów, w przeciwnym wypadku doîoûymy sobie niepotrzebnej pracy. Klikajâc na kaûde z tych pól (z wyjâtkiem WD, Dithering i Colors) spowodujemy przeîâczanie opcji. W momencie gdy ustawimy të, na której nam zaleûy, moûemy przejôê dalej. Nie trzeba tu niczego akceptowaê. Widoczne na ekranie wartoôci bëdâ zastosowane do prac nad naszym obrazkiem. Jeôli klikniemy na pole z liczbâ kolorów, pojawi nam sië liczba kolorów, jakâ moûe mieê obrazek (znajdâ sië tu takûe tryby HAM, EHB czy HAM-8 dla Amig agowskich). Liczbë kolorów wybieramy tak samo jak "loader" lub "saver". Zaîoûyliômy juû, ûe nasz obrazek bëdzie miaî rozmiary 640 x 512 pikseli. Ustawiamy zatem oba rozmiary na StdSz, a przeplot na Lace i îadujemy obrazek, klikajâc na napis LOAD. Pojawi sië requester (rys. 4.), w którym po prawej stronie wybierzemy nazwë dysku, na jakim jest nasz obrazek, a po lewej nazwë obrazka. Requester ten ma dwa pola nie spotykane w innych programach tego typu: SHOW i HIDE. Okreôlajâ one nazwë rozszerzenia zbiorów, które majâ byê odpowiednio wyôwietlane lub nie wyôwietlane na liôcie po lewej. Program ma drobne niedociâgniëcie: jeôli przypadkowo wpiszemy do obu tych pól identyczne rozszerzenie (na przykîad *.gif), to zostanâ pokazane wyîâcznie nazwy katalogów, a to nam wiele nie da. Nazwy zbiorów i katalogów wyôwietlane sâ w kolejnoôci zapisania ich na dysku. Jeôli chcemy, aby byîy wyôwietlone alfabetycznie, naleûy kliknâê na czarny gadûet po prawej stronie listy, sîuûâcy do przesuwania zawartoôci listy. Uwaga: Îadowanie zazwyczaj zaczyna sië natychmiast po wybraniu nazwy obrazka. Jeôli jednak nasz obrazek jest w formacie JPEG, wówczas zostaniemy dodatkowo zapytani, czy chcemy go wygîadziê (Smoothing ON) czy nie (OFF). Zmiany dokonuje sië klikajâc na pole z tym napisem. Obrazki îadowane z "wygîadzaniem" majâ bardziej anti-aliasowane brzegi i zajmujâ nieco wiëcej miejsca na dysku. Rysunek 5a przedstawia nasz obrazek zaîadowany z wygîadzeniem, rysunek 5b -- bez wygîadzenia (nie odpowiadam za to, co wyjdzie z tego w druku). Po zaakceptowaniu powyûszego wyboru rozpocznie sië îadowanie. Potrwa ono chwilë w zaleûnoôci od formatu obrazka i konfiguracji naszej Amigi (najdîuûej îaduje sië wîaônie JPEG). Mamy juû zaîadowany obrazek, ale jego format i rozmiary odbiegajâ od tych, które nam sâ potrzebne. Co robiê? Wîaôciwâ strategië bëdziemy mogli dobraê po obejrzeniu obrazka. Moûna w tym celu kliknâê na EXECUTE (w prawym dolnym rogu). Nie jest to jednak najlepsze wyjôcie, zwîaszcza jeôli oryginalny obrazek jest wiëkszy od rozmiarów, jakie mu nadaliômy przez Screen Controls. Dlaczego? Przekonajcie sië sami. Lepiej uûyê tutaj tak zwanego "operatora" o nazwie CROP VISUAL. Operator ten wybierzemy, klikajâc na pole znajdujâce sië poniûej napisu IMAGE OPERATORS. Pojawi sië lista, zawierajâca spis dostëpnych operatorów. Wybierzemy go tak samo jak "loader" czy "saver". Po wybraniu operatora kliknijmy tym razem na "Accept and Operate", co spowoduje natychmiastowe jego zadziaîanie. Po chwili na ekranie pojawi sië coô, co widaê na rysunku 6. Bëdzie to caîy obrazek. Wprawdzie jest on czarno-biaîy, ale za to 24-bitowy. Oznacza to, ûe tak wyglâdaîby, jeôli zapisaîbyô go jako 24-bitowy. Kaûda "niûsza" liczba bitów obniûy nieco jakoôê obrazka. Chodzi o to, aby odstëpstwa byîy jak najmniejsze. Oprócz obrazka zobaczymy takûe ramkë i menu operatora. Ramka sîuûy do wyznaczenia zakresu obcinania rysunku. Wymiary ramki zmieniamy podobnie jak w rozkazie Overscan z preferencji systemu, to znaczy, ûe jeôli klikniemy na jeden z 8 kwadracików na dowolnym boku i przytrzymujâc lewy klawisz myszki przesuniemy zwierzaka, wówczas przesunie sië tylko ten bok, jeôli zaô identycznie postâpimy z dowolnym innym punktem ramki -- przesunie sië caîa ramka bez zmiany rozmiaru. Co oznaczajâ poszczególne gadûety w menu CROP VISUAL (rys. 7.)? Width -- to szerokoôê ramki "tnâcej" w pikselach. Height -- jej szerokoôê. Offset X i Y -- to odstëpy górnego lewego rogu ramki (w pikselach) od lewego górnego rogu rysunku, liczone odpowiednio po osi X i Y. Snap X i Y -- "zatrzaskuje" prawy dolny róg ramki na podanych wymiarach. Oznacza to, ûe nie bëdziemy mogli przesunâê tego rogu. Jest to wygodne, jeôli obrabiamy serië identycznych obrazków. Taka przyjemnoôê nie zdarza sië jednak zbyt czësto. Podane tu wartoôci nie mogâ byê wiëksze niû aktualne wymiary ramki. Nie mogâ teû byê zerami. Jeôli chcemy ramkë zmieniaê dowolnie, najwygodniej wpisaê tu wartoôci 1 i 1. Units -- okreôla rodzaj jednostek, w jakich przeliczone bëdâ rozmiary i przesuniëcie ramki. Mamy tu do wyboru jednostki angielskie i metryczne. Poniûej znajdujâ sië rozmiary przeliczone w wybranych jednostkach: Image aspect -- to stosunek boków dîugoôci obrazka (tu akurat odnosi sië do dîugoôci boków ramki). Dla obrazków Amigi wynosi on 5:4 i tej wielkoôci powinniômy sië trzymaê, jeôli chcemy, aby nasz obrazek miaî jak najmniejsze znieksztaîcenia. Oznacza to, ûe nasze obrazki powinny mieê wielkoôê na przykîad 640 x 512 lub 320 x 256 pikseli, ale mogâ mieê takûe i (na przykîad) 355 x 284 czy 170 x 136 pikseli. "Olanie" aspektu nie tylko moûe znieksztaîciê nasz obrazek, ale spowodowaê, ûe niektóre prostsze wyôwietlacze pokaûâ nasz obrazek podobny do tego, co widzimy na rysunku 8. Ignore Aspect/Keep Aspect (przeîâczane przez klikniëcie na to pole): Ignore Aspect pozwala dowolnie ustawiê rozmiary ramki, Keep Aspect zaô powoduje, ûe kaûda zmiana jednego rozmiaru spowoduje automatycznâ zmianë drugiego rozmiaru ramki, tak aby aspekt zostaî zachowany. Full Size -- jeôli klikniesz na ten gadûet, ramka obejmie caîy obrazek. Size (24-bity) pokazuje, ile miejsca zajmie fragment obrazka znajdujâcy sië wewnâtrz ramki, jeôli zapisaîbyô go po obciëciu jako 24-bitowy (tak na marginesie -- podana tu wielkoôê jest nieco zawyûona). UWAGA: Orientacyjnie moûna przyjâê, ûe ten sam fragment w 16 kolorach zajmie okoîo 20% podanej tu wartoôci, a w 256 kolorach okoîo 40% tej wartoôci. ZOOM IN -- powiëkszy obrazek tak, aby zostaî pokazany na ekranie obszar ograniczony ramkâ i okoîo 25% obrazka poza ramkâ. Jeôli chcesz dalej zagîëbiaê sië w powiëkszanie, musisz zmniejszyê ramkë, inaczej klikanie na gadûet nic nie da. Powrót do caîego obrazka nastâpi, gdy klikniemy na FULL SIZE (jednoczeônie ramka obejmie caîy obrazek). ABORT -- pozwala przerwaê wyôwietlanie obrazka. Aby wyôwietliê resztë, musisz kliknâê na Full Size. Znaczenia opcji ACCEPT i EXIT nie muszë chyba objaôniaê. Skoro juû wszystko wiemy, to do dzieîa. Rysuje sië przed nami kilka moûliwoôci. Po pierwsze: przeskalowaê (tu zmniejszyê) obrazek. Nie moûemy jednak bezkrytycznie zastosowaê tu operatora SCALE. Jeôli bowiem skorzystalibyômy z niego bezpoôrednio, wówczas otrzymamy obrazek znieksztaîcony. Jeôli natomiast bëdziemy chcieli zachowaê aspekt, wówczas do wyboru mamy (w naszym wypadku) 640 x 484 lub 686 x 512 pikseli. Ûaden z tych wymiarów nam nie odpowiada. Nie jest teû najlepszym rozwiâzaniem wyciëcie fragmentu o wymiarach 640 x 512 pikseli, stanowi to bowiem tylko okoîo 3/4 obrazka. Naleûy pójôê na pewien kompromis. Moûna najpierw przeskalowaê obrazek na nieco wiëkszy, a nastëpnie wyciâê z niego odpowiedni fragment o wîaôciwych proporcjach po to, aby na koniec zmniejszyê go do wîaôciwych rozmiarów. Wymaga to jednak jeszcze wiëkszej iloôci pamiëci, a przewaûnie pracuje sië "na granicy", a zatem zazwyczaj najpierw wycina sië najwiëkszy moûliwy fragment, a potem sië go skaluje. Ale ile wyciâê? Kaûde skalowanie znieksztaîca nieco obrazek, przy czym mniejsze znieksztaîcenia sâ przy zmniejszaniu, natomiast przy zwiëkszaniu naleûy unikaê dajâcych najwiëksze znieksztaîcenia zakresów 101-109% i powyûej 133%. W naszym wypadku sytuacja jest doôê komfortowa, bo obrazek bëdziemy zmniejszaê. Aby zmniejszyê go w niewielkim stopniu, wybierzemy do obliczeï jeden bok i na jego podstawie obliczymy drugi. W tym celu dobrze jest sië zaopatrzyê w kalkulator (moûe to byê takûe kalkulator systemowy w tle). Nasz przykîadowy obrazek ma rozmiary 1024 x 768 pikseli. Z dzielenia: 1024/640 i 512/768 wynika, ûe mniejsze szkody przyniesie "oparcie sië" na krótszym boku. A zatem wykonujemy dziaîanie pomocnicze wynikajâce z aspektu dla Amigi (5:4). 1024*4/5 i juû wiemy, ûe musimy wyciâê ramkë o wymiarach 960 x 768 pikseli. Ramkë z opcji CROP VISUAL ustawiamy tak, aby poza niâ znalazîy sië nieistotne szczegóîy i zatwierdzamy obciëcie, klikajâc na ASPECT. Jeôli w ustawianiu ramki przeszkadza nam menu operatora, moûemy je chwilowo schowaê, klikajâc na odpowiedni gadûet. Po zaakceptowaniu CROPA wracamy do menu gîównego, klikamy na pole pod napisem IMAGE OPERATORS i z listy wybieramy opcjë SCALE, zatwierdzajâc jâ klikniëciem na ACCEPT and OPERATE. Pojawi sië nowe menu, jak na rysunku 9. Moûna TU wprawdzie mozolnie ustawiaê myszkâ ûâdane rozmiary, za pomocâ gadûetów przesuwnych -- jest to jednak robota dla masochisty. Poniewaû znamy rozmiary koïcowe, klikamy w polach pod napisem RESULT, wymazujemy to, co tam jest, i wpisujemy odpowiednio 640 i 512, a nastëpnie zatwierdzamy je przez ASPECT. UWAGA: Program podczas skalowania automatycznie przeîâcza sië z powiëkszania na zmniejszanie i odwrotnie. Zatem nie musimy sië tym martwiê. Teraz wystarczy wykonaê rysunek (klikajâc) na EXECUTE i zapisaê go na dysku. To wszystko byîo doôê îatwe, nasz obrazek bowiem zajmowaî caîy obszar 1024 x 768 pikseli. Nie zawsze jest jednak tak wesoîo. Pececiarze sâ zazwyczaj tak dowcipni, ûe umieszczajâ interesujâcy nas obrazek (znacznie mniejszy niû "peîny" rozmiar rysunku) w dowolnie wybranym miejscu, wypeîniajâc resztë jakimô podkîadem. Wyciëcie samego obrazka nic tu nie da, bo rozmiary bëdâ absolutnie idiotyczne z naszego punktu widzenia. Najczëôciej spotykane niebieskie dewiacje to: * Rysunek jest znacznie wyûszy niû szerszy. Zaîóûmy, ûe ma rozmiary 385 x 690 pikseli. Jak sprowadziê go do potrzebnych nam 640 x 512? Mamy dwa wyjôcia. Pierwsze to (podobnie jak powyûej) sprowadziê go do wîaôciwych rozmiarów, i to nawet bez kalkulatora. W naszym wypadku wycinamy ramkë o wielkoôci 385 x 308 pikseli [ta druga wartoôê wynika z aspektu, wedîug wzoru 385 * (512/640)] i skalujemy jâ. Jeôli jednak chcemy mieê peîny obrazek, musimy w takim wypadku zlekcewaûyê jeden z wymiarów. Na przykîad lekcewaûymy szerokoôê i skalujemy obrazek, wpisujâc do pola RESULT dla wysokoôci wartoôê 512, a nastëpnie do pola Width (pod napisem PERCENT REDUCTION) dla szerokoôci takâ samâ wartoôê procentowâ, jaka wyszîa nam dla wysokoôci, w tym wypadku 74, co da nam szerokoôê równâ 285). Po wprowadzeniu wartoôci akceptujemy je. Nastëpnie "wykonujemy" obrazek, klikajâc na EXECUTE, i zapisujemy na dysku po to, aby w przyszîoôci metodâ "pecetycznâ" umieôciê go jako brush na jakimô tle o "wîaôciwych" wymiarach 640 x 512 pikseli. Moûna to zrobiê na przykîad Deluxe Paintem, moûna teû i za pomocâ ADPro, ale na opis tej czynnoôci nie ma dzisiaj miejsca. * Rysunek jest znacznie szerszy niû wyûszy. Zaîóûmy tym razem, ûe ma on 690 x 385. Moûemy tu postâpiê tak, jak opisano wyûej. Oczywiôcie pamiëtajâc o tym, ûe tym razem dopasowujemy wysokoôê do staîej szerokoôci 640 lub, co jest wyjôciem znacznie gorszym, jednak niekiedy koniecznym, najpierw obrazek przeskalowaê, co w tym wypadku daje 918 x 512 pikseli, a potem odciâê za pomocâ Crop Visual wszystko, co wystaje poza 640. UWAGA: Jeôli chcemy zapisaê obrazek jako 24-bitowy, nie musimy go "wykonywaê". Efekt naszych zmagaï widzimy na ilustracji 10. Nie zawsze jednak jakoôê uzyskanego tak obrazka nas zadowoli. ADPro ma szereg opcji, pozwalajâcych na poprawienie wyglâdu takiego obrazka. Porozmawiamy o nich za miesiâc.