Dieser Code zählt die Farben, die in einem Bild vorkommen.
Habs irgendwann '04 geschrieben, wie da schon steht.
Besonderen dank hier nochmal an Rallimen, der es enorm verschnellern
konnte.
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN]
Graphics 800,600,32,2 bild = LoadImage(\"d:\ablage\bild.jpg\")
breite=ImageWidth(bild) hoehe=ImageHeight(bild) Dim farbe(breite * hoehe)
timer1 = MilliSecs() SetBuffer ImageBuffer(bild) LockBuffer ImageBuffer(bild)
For scanX = 0 To breite -1 For scanY = 0 To hoehe -1 farbe(z) = ReadPixelFast(scanX,scanY) z= z +1 Next Next UnlockBuffer ImageBuffer(bild) quicksort(0,breite*hoehe) For z = 1 To breite * hoehe If Farbe (z -1) <> Farbe (z) Then farbenanzahl = farbenanzahl +1 Next timer1 = MilliSecs() -timer1 SetBuffer FrontBuffer() DrawBlock bild, 0,0 Color 0,0,0 Rect 0,0,300,30,1 Color 255,255,255
Text 0,0,\"Dieses Bild enthält \"+farbenanzahl+\" Farben\" Text 0,15,\"Dieses Bild dauerte \"+timer1 + \" Millisek.\" WaitKey Cls For t= 0 To breite*hoehe DebugLog Farbe (t) Next End
Function quicksort(l,r) Local p,q,h p=l : q=r x=Farbe((l+r)/2) Repeat While Farbe(p)<x p=p+1 Wend While x<Farbe(q) q=q-1 Wend If p>q Then Exit
h=Farbe (q) Farbe (q)=Farbe (p) Farbe (p)=h
p=p+1 q=q-1 If q<0 Then Exit Forever If l<q Then a=quicksort(l,q) If p<r Then a=quicksort(p,r) Return True End Function
|