Grün und Graustich im Bild
Übersicht

![]() |
etlamBetreff: Grün und Graustich im Bild |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() ![]() Schon mal vielen Dank im voraus ![]() |
||
![]() |
hamZtaAdministrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Davon geht der Grün-Grau Stich aber nicht weg. | ||
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
hast du acuh schon mal was von arrays gehört...?? wäre vielleicht hier noch nützlich ... ![]() Allerdings kann ich keinen Fehler finden. Ich nehme einfach an, das professionelle Bildprogramme sowieso einen anderen algorhytmus verwenden..... ![]() ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group