inny1997 Temat założony przez niniejszego użytkownika |
kolor w allegro » 2010-09-17 16:38:54 ostatnio zrobiłem eksperyment i chciałem przerzucić obraz na liczbę(albo na coś innego)
,a później znowu na obraz i zobaczyć przekształcenie ,ale nie udało się . później wymyśliłem , aby połączyć kilka obrazów w jeden . jedynym pomysłem było zsumowanie kolorów danych pixeli i narysowaniu pixela na takiej samej pozycji o takim kolorze
oto kod (jest napisany poprawnie)
#include <allegro.h> #include <math.h> int main() { allegro_init(); install_timer(); install_keyboard(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" ); set_volume( 255, 255 ); BITMAP * przed1; BITMAP * przed2; BITMAP * przed3; BITMAP * po; przed1 = load_bmp( "kula.bmp", default_palette ); przed2 = load_bmp( "kula2.bmp", default_palette ); przed3 = load_bmp( "kula3.bmp", default_palette ); po = create_bitmap( 255, 255 ); int i = 0; int a = 0; clear_to_color( po, makecol( 255, 255, 255 ) ); while( !key[ KEY_A ] ) { if( i >= 255 ) { i = 1; a++; } i++; putpixel( po, a, i, getpixel( przed1, a, i ) + getpixel( przed2, a, i ) + getpixel( przed3, a, i ) ); blit( po, screen, 0, 0, 100, 100, 255, 255 ); } save_bmp( "kula3.bmp", po, default_palette ); destroy_bitmap( przed1 ); destroy_bitmap( przed2 ); destroy_bitmap( przed3 ); destroy_bitmap( po ); } END_OF_MAIN()
byłem zaskoczony że kolory można dodawać , czyli że kolor w allegro jest wyrażony za pomocą liczb. zrobiłem parę prób i rzeczywiście można .
później chciałem zobaczyć w jakiś sposób ta liczba jest przerzucana na kolor .
zadeklarowałem zmienną c , i za każdym razem dodawałem ją o 1. wychodziły mi jedynie kolory czarno-niebieskie . zastanawiam się jak te liczby są przerzucane na kolor ,bo to niema żadnej logiki.
oto kilka eksperymentów z tworzeniem różnych obrazów
putpixel( po, a, i, i * i + a * a );
putpixel( po, a, i, i * i * a ); putpixel( po, a, i, i * i / a * a );
link do paczki
http://rapidshare.com/files/419609200/test_teleport.rar
ktoś wie coś o tym bo dla mnie to nowość.
|
|
pekfos |
» 2010-09-17 17:14:18 jest w tym logika int rgb =( r << 16 ) |( g << 8 ) | b; //edit: a z powrotem: r = rgb >> 16; g =( rgb >> 8 ) & 0xff; b = rgb & 0xff; to właściwie zwykła arytmetyka binarna.. //edit2: kolory są od 0x0 do 0xffffff czyli sztuka w ustawieniu wartości 0x0 - 0xff na odpowiednich miejscach:) |
|
inny1997 Temat założony przez niniejszego użytkownika |
» 2010-09-17 17:57:30 też mi się wydawało że opiera się to na operacjach binarnych. |
|
DejaVu |
» 2010-09-17 21:07:22 To nie są operacje binarne tylko bitowe (ale to tak przy okazji). |
|
dmx81 |
» 2010-09-21 21:23:40 to moze cie zaskocze, ale jest jeszcze cos takiego, jak kanal alfa (alpha) - wydaje mi sie ze w allegro tez mozna bylo tego uzywac - a wiaze sie to z przezroczystoscia, a dokladniej mowiac, z mieszaniem rysowanego koloru z aktualnym kolorem w danym miejscu. a co do dodawania wartosci liczbowych kolorow - w ten sposob dziala wlasnie negatyw, kontrast itd - np wartosci ponizej 127 sa obnizane, a powyzej sa zwiekszanie, przez co jasne jasnieje, ciemne ciemnieje :) pobaw sie z kolorami tworzac gradienty, czyli mozliwie plynne przejscia z jednej barwy w inna (lub wielokolorowe) np for(int i=0;i<255;i++){ rysuj_linie(x,y,x2,y2,r=0;g=0;b=i);y++,y2++;} |
|
szyx_yankez |
» 2010-09-21 21:48:08 Czekajcie, to może teraz ja was obu zaskocze: kilka miesięcy temu pisałem sobie funkcije które dodają do obrazu efekty takie jak:
-Monochromatyka
-Efekt płasko żeźby
-gusian blur
-wykrywanie krawedzi
-Robienie z obrazu 2d obraz 3d(ofc, okularki potrzebne)
-Wyostrzenie, rozmycie
-i pare innych baierów.
Allegro, to biblioteka w której można by klona photoshopa napisać. |
|
ThudPoland |
» 2010-09-21 21:49:37 W allegro. xD
Weź przestań.
Nie lepiej zaimplementować takie bajery w SDL'u albo już w najnowszym Allegro (nie było wtedy chyba pisane, kiedy ty go napisałeś). |
|
szyx_yankez |
» 2010-09-21 22:06:53 Wiesz, ja wole allegro, ty wolisz sdl, to tak jak wojna opengl vs Directx, to dobre i to dobre, każda ma swoje zalety i wady które po dodaniu wychodzą na 0. Allegro wcale nie ma mniejszych możliwości niż sdl, a allegro 5 z szybkością bije go na głowe.
Nowsze allegro tj. allegro 5(4.9.x), pierwsze jego wersiję testowe wyszły jakieś 2 lata temu.
|
|
« 1 » |