Normaal heb je in een html document een img tag oid als je naar een afbeelding verwijst. Ik vond dat een beetje saai, en ging puur voor de grap een c++ programma maken om het plaatje volledig te ntegreren in de html. Dat de ik door een tabel te maken en iedere td de kleur van de bijbehorende pixel te geven. Dit werkte prima, tot ik ging optimaliseren. De html werd ruim 800 kByte groot, te groot dus. Dus ik dacht, een kleurcode is:
Als ik nu eerst alle kleurcodes ophaal, en dan kijk of er meer dan 2 na ekaar komen, dan doe ik gewoon
Dat heb ik dus geprobeerd, maar dan klopt mijn plaatje niet meer. De code die ik gebruik staat hieronder.
code voor het dec naar hex
En de functie die het html bestand maakt:
Als compiler gebruik ik VC++.net
Het niet geoptmaliseerde ding staat hier:
niet geoptimaliseerd
En het plaatje staat hier:
plaatje
code:
1
| BGCOLOR=#000000 |
Als ik nu eerst alle kleurcodes ophaal, en dan kijk of er meer dan 2 na ekaar komen, dan doe ik gewoon
code:
1
| WIDTH=x |
Dat heb ik dus geprobeerd, maar dan klopt mijn plaatje niet meer. De code die ik gebruik staat hieronder.
code voor het dec naar hex
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| string maakHTMLuitLong(long input) { string bffr = "# "; string hexcodes = "0123456789ABCDEF"; input = RGB((input%16777216)>>16,(input%65536)>>8,input&255); for(int a=0; a<6; a++){ bffr[6-a]= hexcodes[input&15]; input/=16; } return bffr; } |
En de functie die het html bestand maakt:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| char bffr[255]; ofstream bestand; bestand.open("c:\\htmlding.html"); bestand << "<HTML><HEAD><TITLE>Mooi HTML PLAATJE!</TITLE></HEAD><BODY>"; sprintf(bffr,"<TABLE cellpadding=0 cellspacing=0 width=%d height=%d>",width, height); bestand << bffr; HDC dc = GetWindowDC(GetDlgItem(hWnd, IDC_PIC)); string * pixels = new string[50000]; int x; int teller=0; for (int y=0; y<=height; y++){ for (x=0; x<=width; x++, teller++){ pixels[teller] = maakHTMLuitLong(GetPixel(dc,x,y)); SetPixel(dc,x,y,0); } } teller=0; int meer=0; for(int y=0; teller<=(width*height); y++){ bestand << "<TR>"; OutputDebugString ("\n Nieuwe Y waarde!"); for (x=0; x<=width; ){ bestand <<"<TD"; for(meer=1; meer<(width-x), pixels[teller]==pixels[teller+meer]; meer++); if (meer>1) bestand << " WIDTH=" << meer; bestand << " BGCOLOR=" << pixels[teller] << ">"; teller+=meer; x+=meer; } } bestand << "</TABLE></BODY></HTML>"; bestand.close(); |
Als compiler gebruik ik VC++.net
Het niet geoptmaliseerde ding staat hier:
niet geoptimaliseerd
En het plaatje staat hier:
plaatje
[ Voor 37% gewijzigd door Verwijderd op 15-05-2003 16:25 . Reden: foutje over de grootte, toevoegen plaatje ]