Posted By: Jovo () on 'CZprogram' Title: truecolor -> indexed color Date: Thu Jul 9 13:10:04 1998 Ahoj. Pokud ti jde jen o konverzi, tak doporucuju Photoshop, PaintShop. Jestli to chces naprogramovat tak mas nekolik moznosti : - paleta 332. Ja to pouzivam, kdyz chci zobrazit vic truecolor bitmap na obrazovce zaraz v 256color rezimech a podle me je to nejlepsi mozny postup (je to rychly a jednoduchy). Nevyhoda je, ze nekdy to vypada trosku neprirozene, zvlast, kdyz mate obrazek v jedne barve (treba neci oblicej vyfoceny pouze jako cerveny obraz). Pro normalni fotky je to v pohode : #define MAX_COL 63 - jaka je max barva v palete, vite o co jde #define PAL_COL 225 - kolik je v palete barev #define rgb2index(r,g,b) (((((r)*7)/PAL_COL)<<5) + ((( (g)*7)/PAL_COL)<<2) + (( (b)*3)/PAL_COL)) void set332palette() { int n; for(n=0;n<=255;n++) myset_color(n, ((n>>5)&7) * MAX_COL/7, ((n>>2)&7) * MAX_COL/7, (n&3) * MAX_COL/3); }; void myset_color(int i, char r, char g, char b) { asm { mov ah,0x10 mov al,0x10 mov bx,i xor bh,bh mov dh,r mov ch,g mov cl,b int 0x10 } } No a je to. - dalsi moznost je adaptivni paleta. Koukni se do Zara - Pocitacova grafika, tam je to popsano docela dobre. - pokud jsi v tom trochu navazno, koukni se do zdrojaku knihovny Allegro pro DJGPP (je to na kazdem simtel archivu). Tam jsou zdrojaky takrka vseho. Navic, kdyz pracujes s DJGPP a Allegrem, tak muzes dat neco jako : BITMAP *b = loadbitmap("ahoj.bmp"); - to vytvori bitmapu podle obrazku, kdyz bude truecolor, tak 24 bit a tak dal. Navic to loaduje PCX, TGA a jeste neco. BITMAP *s = create_bitmap_ex(...); nepamatuju si parametry, je tam vyska sirka, a hlavne barevna hloubka (32,24,16,15,8,4,2bitove bitmapy) pak muzes udelat prevodni paletu z 24 do 8bit color, ale prikaz nan to neznam, je to v helpu. Nebo udelas neco jako : blit(b,s); - to vezme nasi 24bit bitmapu b, prevede ji do barevne hloubky bitmapy s (treba jsme dali 8bit) bud podle 332, optimalizovaneho algoritmu, nebo prevodni tabulky (da se to nastavit) a blitne ji na s. Pokud to chces rovnou na obrazovku, tak das jen blit(b,screen); a jsi doma :-) Nevyhoda : je to nekdy dost pomale, ale pokud mas PII, tak ti top muze byt jedno. Navic ty zdrojaky jsou vyborne zdokumentovane a autor nepouziva nejake velke prasarny ... jo a najdes tam zdrojaky pro loadovani BMPcek vsech typu a kompresi, PCXek, TGAcek, .... proste raj :-) jovo.