Grün und Graustich im Bild
Übersicht
BlitzBasic
Beginners-Corner|
|
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
BlitzBasic
Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group
