Grün und Graustich im Bild

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

etlam

Betreff: Grün und Graustich im Bild

BeitragSa, Jan 28, 2006 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Ich hab mal so zum Spaß einen Bildverkleinerer gemacht, bei dem man 4 Pixel in eines umwandeln kann. Der neue Pixel hat als Farbe den Mittelwert der andern, bei 2*2 funktioniert das auch , nur bei 3*3 bekommt das Bild einen Grün und Graustich:
Code: [AUSKLAPPEN]

AppTitle "BildVerkleinerer"
Graphics 400,70,16,2
frage_1$ = Input("Bild: ")
If FileType(frage_1$) = 0 Then
   RuntimeError("Datei nicht gefunden!")
EndIf
ziel$ = Input("Ziel: ")
frage_2% = Input("Verkleinerung: ")
If Not frage_2% = 1
   If Not frage_2% = 2
      If Not frage_2% = 3
         If Not frage_2% = 4
            If Not frage_2% = 5
               If Not frage_2% = 6
                  If Not frage_2% = 7
                     If Not frage_2% = 8
                        If Not frage_2% = 9
                           RuntimeError("Falsche Eingabe!")
                        EndIf
                     EndIf
                  EndIf
               EndIf
            EndIf
         EndIf
      EndIf
   EndIf
EndIf
bildd = LoadImage(frage_1$)
hoehedesbildesd% = ImageHeight(bildd)
breitedesbildesd% = ImageWidth(bildd)
Graphics breitedesbildesd%,hoehedesbildesd%,16,2
bild = LoadImage(frage_1$)
hoehedesbildes% = ImageHeight(bild)
breitedesbildes% = ImageWidth(bild)
pixelzusamm% = hoehedesbildes% * breitedesbildes%
AppTitle "Bitte Warten, es werden " + pixelzusamm% + " Pixel geprueft"
DrawImage bild,0,0
Dim pixel%(breitedesbildes%*2,hoehedesbildes%*2,3)
zaeler% = 1


apptitlezealer% = pixelzusamm%
qwe% = 0
For x%=0 To breitedesbildes% Step(1)
   For y%=0 To hoehedesbildes% Step(1)
      pixel%(x%,y%,1) = x%
      pixel%(x%,y%,2) = y%
      pixel%(x%,y%,3) = ReadPixel(x%,y%)
      WritePixel(x%,y%,255707070)
      apptitlezealer% = apptitlezealer% - 1
      qwe% = qwe% + 1
      If KeyHit(1) Then RuntimeError("Es wurde beendet")
   Next
Next
hinterbild = CreateImage(breitedesbildes%/frage_2%,hoehedesbildes%/frage_2%)
SetBuffer ImageBuffer(hinterbild)
breiteee% = ImageWidth(hinterbild)
hoeheeee% = ImageHeight(hinterbild)

Origin -1,-1

For xx%=1 To breiteee% Step(1)
   For yy%=1 To hoeheeee% Step(1)
      If frage_2% = 2 Then
         rgb1 = pixel%((xx%-1)*2+1,(yy%-1)*2+1,3)
         rgb2 = pixel%((xx%-1)*2+2,(yy%-1)*2+1,3)
         rgb3 = pixel%((xx%-1)*2+1,(yy%-1)*2+2,3)
         rgb4 = pixel%((xx%-1)*2+2,(yy%-1)*2+2,3)
         a1 = (rgb1 And $FF000000)/$1000000
         r1 = (rgb1 And $FF0000)/$10000
         g1 = (rgb1 And $FF00)/$100
         b1 = (rgb1 And $FF)
         a2 = (rgb2 And $FF000000)/$1000000
         r2 = (rgb2 And $FF0000)/$10000
         g2 = (rgb2 And $FF00)/$100
         b2 = (rgb2 And $FF)
         a3 = (rgb3 And $FF000000)/$1000000
         r3 = (rgb3 And $FF0000)/$10000
         g3 = (rgb3 And $FF00)/$100
         b3 = (rgb3 And $FF)
         a4 = (rgb4 And $FF000000)/$1000000
         r4 = (rgb4 And $FF0000)/$10000
         g4 = (rgb4 And $FF00)/$100
         b4 = (rgb4 And $FF)
         ;a1 = (rgb1 And $FF000000)/$1000000
         a = (a1 + a2 + a3 + a4) / 4
         r = (r1 + r2 + r3 + r4) / 4
         g = (g1 + g2 + g3 + g4) / 4
         b = (b1 + g2 + g3 + g4) / 4
         rgb=a*$1000000 + r*$10000 + g*$100 + b
         WritePixel(xx%,yy%,rgb)
      EndIf   
      If frage_2% = 3 Then
         rgb1 = pixel%((xx%-1)*3+1,(yy%-1)*3+1,3)
         rgb2 = pixel%((xx%-1)*3+2,(yy%-1)*3+1,3)
         rgb3 = pixel%((xx%-1)*3+3,(yy%-1)*3+1,3)
         rgb4 = pixel%((xx%-1)*3+1,(yy%-1)*3+2,3)
         rgb5 = pixel%((xx%-1)*3+2,(yy%-1)*3+2,3)
         rgb6 = pixel%((xx%-1)*3+3,(yy%-1)*3+2,3)
         rgb7 = pixel%((xx%-1)*3+1,(yy%-1)*3+3,3)
         rgb8 = pixel%((xx%-1)*3+2,(yy%-1)*3+3,3)
         rgb9 = pixel%((xx%-1)*3+3,(yy%-1)*3+3,3)
         a1 = (rgb1 And $FF000000)/$1000000
         r1 = (rgb1 And $FF0000)/$10000
         g1 = (rgb1 And $FF00)/$100
         b1 = (rgb1 And $FF)
         a2 = (rgb2 And $FF000000)/$1000000
         r2 = (rgb2 And $FF0000)/$10000
         g2 = (rgb2 And $FF00)/$100
         b2 = (rgb2 And $FF)
         a3 = (rgb3 And $FF000000)/$1000000
         r3 = (rgb3 And $FF0000)/$10000
         g3 = (rgb3 And $FF00)/$100
         b3 = (rgb3 And $FF)
         a4 = (rgb4 And $FF000000)/$1000000
         r4 = (rgb4 And $FF0000)/$10000
         g4 = (rgb4 And $FF00)/$100
         b4 = (rgb4 And $FF)
         a5 = (rgb5 And $FF000000)/$1000000
         r5 = (rgb5 And $FF0000)/$10000
         g5 = (rgb5 And $FF00)/$100
         b5 = (rgb5 And $FF)
         a6 = (rgb6 And $FF000000)/$1000000
         r6 = (rgb6 And $FF0000)/$10000
         g6 = (rgb6 And $FF00)/$100
         b6 = (rgb6 And $FF)
         a7 = (rgb7 And $FF000000)/$1000000
         r7 = (rgb7 And $FF0000)/$10000
         g7 = (rgb7 And $FF00)/$100
         b7 = (rgb7 And $FF)
         a8 = (rgb8 And $FF000000)/$1000000
         r8 = (rgb8 And $FF0000)/$10000
         g8 = (rgb8 And $FF00)/$100
         b8 = (rgb8 And $FF)
         a9 = (rgb9 And $FF000000)/$1000000
         r9 = (rgb9 And $FF0000)/$10000
         g9 = (rgb9 And $FF00)/$100
         b9 = (rgb9 And $FF)
         a = (a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9) / 9
         r = (b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8 + b9) / 9
         g = (g1 + g2 + g3 + g4 + g5 + g6 + g7 + g8 + g9) / 9
         b = (b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8 + b9) / 9
         rgb=a*$1000000 + r*$10000 + g*$100 + b
         WritePixel(xx%,yy%,rgb)
      EndIf   
      
      
      
      ;pixel%(qwe%,1) = x%
      ;pixel%(qwe%,2) = y%
      ;pixel%(qwe%,3) = ReadPixel(x%,y%)
      ;WritePixel(x%,y%,255707070)
      ;apptitlezealer% = apptitlezealer% - 1
      ;qwe% = qwe% + 1
      If KeyHit(1) Then RuntimeError("Es wurde beendet")
   Next
Next
speicher% = SaveBuffer (ImageBuffer(hinterbild),ziel$)
If speicher% = 0 Then RuntimeError("Fatal Error, bitte nochmal versuchen")
RuntimeError("Datei gespeichert!")

Ich hab den Fehler schon gesucht, finde Ihn aber nicht Sad Crying or Very sad
Schon mal vielen Dank im voraus Laughing

hamZta

Administrator

BeitragSa, Jan 28, 2006 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If Not frage_2% = 1
   If Not frage_2% = 2
      If Not frage_2% = 3
         If Not frage_2% = 4
            If Not frage_2% = 5
               If Not frage_2% = 6
                  If Not frage_2% = 7
                     If Not frage_2% = 8
                        If Not frage_2% = 9
                           RuntimeError("Falsche Eingabe!")
                        EndIf
                     EndIf
                  EndIf
               EndIf
            EndIf
         EndIf
      EndIf
   EndIf
EndIf


Jesses, Junge. Überdenke die Situation!

Code: [AUSKLAPPEN]

If frage_2% < 1 or frage_2% > 9 Then
   Runtimeerror("Falsche Eingabe!")
End If
Blog.

etlam

BeitragSa, Jan 28, 2006 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Davon geht der Grün-Grau Stich aber nicht weg.

simi

BeitragSa, Jan 28, 2006 22:10
Antworten mit Zitat
Benutzer-Profile anzeigen
hast du acuh schon mal was von arrays gehört...?? wäre vielleicht hier noch nützlich ... Very Happy

Allerdings kann ich keinen Fehler finden. Ich nehme einfach an, das professionelle Bildprogramme sowieso einen anderen algorhytmus verwenden..... Wink Das mit dem Mittelwert bilden kommt mir zu einfach vor Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group