Verata
Lieutenant
- Registriert
- Apr. 2009
- Beiträge
- 758
Hi @ all!
Ich versuche für ein Programm die Durchschnittsfarbe eines Bildes zu bestimmen. Dabei bin ich leider auf unerwartete Probleme gestoßen. Was ich vom System her versuche ist folgendes:
Bild in Picturebox laden
Bild Pixelweise durchgehen, Long Farbwerte in RGB Werte konvertieren,
Alle R-Werte addieren, alle B-Werte addieren, Alle G -Werte addieren
R-,G- und B-Werte durch die Anzahl der Pixel teilen und das Ergebnis in Long konvertieren.
Dazu habe ich mir folgenden Code ausgedacht:
Leider funktioniert das überhaupt nicht. Aus mir nicht ersichtlichen Gründen ist die Variable Count, die die Pixel mitzählt am Ende größer als die Höhe*Breite in Pixeln. Des Weiteren ist kommt immer Weiß heraus. Sieht jemand, wo der Fehler liegt? Hat jemand eine Idee, wie man den Code beschleunigen könnte?
mfg Verata
Ich versuche für ein Programm die Durchschnittsfarbe eines Bildes zu bestimmen. Dabei bin ich leider auf unerwartete Probleme gestoßen. Was ich vom System her versuche ist folgendes:
Bild in Picturebox laden
Bild Pixelweise durchgehen, Long Farbwerte in RGB Werte konvertieren,
Alle R-Werte addieren, alle B-Werte addieren, Alle G -Werte addieren
R-,G- und B-Werte durch die Anzahl der Pixel teilen und das Ergebnis in Long konvertieren.
Dazu habe ich mir folgenden Code ausgedacht:
Code:
Public Function getcolor(path As String, Höhe As Long, Breite As Long, pic As PictureBox) As Long
pic.AutoSize = True
pic.ScaleMode = 3
pic.Picture = LoadPicture(path)
Dim result As Long
Dim R As Long
Dim G As Long
Dim B As Long
Dim count As Long 'nur zu Testzwecken
Dim x As Integer
Dim y As Integer
For y = 1 To Höhe
For x = 1 To Breite
R = R + (GetPixel(pic.hdc, x, y) And &HFF&)
G = G + (GetPixel(pic.hdc, x, y) \ &H100& And &HFF&)
B = B + (GetPixel(pic.hdc, x, y) \ &H10000 And &HFF&)
count = count + 1 'nur zu Testzwecken
Debug.Print R 'nur zu Testzwecken
DoEvents
Next x
Next y
result = RGB(R / (Höhe * Breite), G / (Höhe * Breite), B / (Höhe * Breite))
getcolor = result
End Function
Leider funktioniert das überhaupt nicht. Aus mir nicht ersichtlichen Gründen ist die Variable Count, die die Pixel mitzählt am Ende größer als die Höhe*Breite in Pixeln. Des Weiteren ist kommt immer Weiß heraus. Sieht jemand, wo der Fehler liegt? Hat jemand eine Idee, wie man den Code beschleunigen könnte?
mfg Verata
Zuletzt bearbeitet: