;** Minitool zum Farben-Zählen von Bildern
;** 2004, by Triton
;** überarbeitet von Rallimen
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
; Speedsort
Function quicksort(l,r)
Local p,q,h
p=l : q=r
x=Farbe((l+r)/2)
Repeat
While Farbe(p)q Then Exit
;SWAP------------------
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
|