Seite 1 von 1

SchwarzWeiß / Kontrast / Helligkeit

Verfasst: 05.02.2009 13:29
von Tompazi

Code: Alles auswählen

;B&W - Contrast - Brightness

Procedure Black_n_White(ImageID)
 StartDrawing(ImageOutput(ImageID))
 
 For y = 0 To ImageHeight(ImageID) -1
  For x = 0 To ImageWidth(ImageID) -1
  
   Color = Point(x,y)
   R = Red(Color) 
   G =  Green(Color)
   B = Blue(Color)
   Gray = (R+G+B)/3
  
   Plot(x,y,RGB(Gray,Gray,Gray))
  
  Next x
 Next y
 
 StopDrawing()
EndProcedure

Procedure Contrast(ImageID,ContrastChange) ;; ContrastChange = -255 to 255
 StartDrawing(ImageOutput(ImageID))
 
 For y = 0 To ImageHeight(ImageID) -1
  For x = 0 To ImageWidth(ImageID) -1
   
   Color = Point(x,y)
   R = Red(Color) 
   G =  Green(Color)
   B = Blue(Color)
   
   If R > G And R > B
    R + ContrastChange
    G - ContrastChange
    B - ContrastChange
   ElseIf G > R And G > B
    G + ContrastChange
    R - ContrastChange
    B - ContrastChange
   ElseIf B > R And  B > G
    B + ContrastChange
    R - ContrastChange
    G - ContrastChange
   EndIf
   
   If R > 255 : R = 255
   ElseIf R < 0 : R = 0 : EndIf
   If G > 255 : G = 255
   ElseIf G < 0 : G = 0 : EndIf
   If B > 255 : B = 255
   ElseIf B < 0 : B = 0 : EndIf
   
   Plot(x,y,RGB(R,G,B))
  
  Next x
 Next y
 
 StopDrawing()
EndProcedure

Procedure Brightness(ImageID,Change) ;; Change = -255 To 255
 StartDrawing(ImageOutput(ImageID))
 
 For y = 0 To ImageHeight(ImageID) -1
  For x = 0 To ImageWidth(ImageID) -1
  
   Color = Point(x,y)
   R = Red(Color) 
   G =  Green(Color)
   B = Blue(Color)
   
   R + Change
   G + Change
   B + Change
   
   If R > 255 : R = 255
   ElseIf R < 0 : R = 0 : EndIf
   If G > 255 : G = 255
   ElseIf G < 0 : G = 0 : EndIf
   If B > 255 : B = 255
   ElseIf B < 0 : B = 0 : EndIf
   Plot(x,y,RGB(R,G,B))
  
  Next x
 Next y
 
 StopDrawing()
EndProcedure

Image$ = OpenFileRequester("Please choose file to load","", "Bitmap (*.bmp)|*.bmp;", 0)
      
If Image$
 LoadImage(0,Image$)
 Black_n_White(0) ;Comment in or out
 ;Contrast(0,10) ;Comment in or out
 ;Brightness(0,-50) ;Comment in or out
Else
 End
EndIf

Saver$ =SaveFileRequester("Save your image",Image$, "Bitmap (*.bmp)|*.bmp;", 0)

If Saver$
 SaveImage(0,Saver$)
Else
 End
EndIf
//EDIT:
Sorry,
ich schreib grad an einem kleinem FotoEditor und das sind ein paar Prozeduren zum Schwarzweiß machen, Kontrast und Helligkeit ändern.
Bild wird geladen und abgespeichert ...

MfG Tompazi

Re: SchwarzWeiß / Kontrast / Helligkeit

Verfasst: 05.02.2009 13:41
von Kiffi
// Edit: [hat sich erledigt]

Danke & Grüße ... Kiffi

Verfasst: 05.02.2009 15:26
von STARGÅTE
Habe da auch schon n Include gebaut :
Include - Farbanpassungen (Helligkeit, Kontrast, Graustufen)

Vllt kannst du ja noch das eine oder andere benutzen.

Im übrigen würde ich dir raten das ganze lieber mit Sprites zu machen statt mit Image, und dann mit DrawingBuffer() zu arbeiten statt mit den Point() und Plot() da diese sehr langsam sind.
Gerade weil du ja ganze Bilder formatierst, wäre das ein großer vorteil

Verfasst: 05.02.2009 17:17
von Tompazi
Danke, habs mir durchgeschaut und dank dir einen Fehler in meiner Kontrast Prozedur gefunden..

Code: Alles auswählen

Procedure Contrast(ImageID,ContrastChange) ;; ContrastChange = -100 to 100
 StartDrawing(ImageOutput(ImageID))
 
 For y = 0 To ImageHeight(ImageID) -1
  For x = 0 To ImageWidth(ImageID) -1
   
   Color = Point(x,y)
   R = Red(Color) 
   G =  Green(Color)
   B = Blue(Color)
   C.f = ContrastChange/100
    R = R + (R -128) * C
    G = G + (G -128)* C
    B = B + (B -128) * C
    
   If R > 255 : R = 255
   ElseIf R < 0 : R = 0 : EndIf
   If G > 255 : G = 255
   ElseIf G < 0 : G = 0 : EndIf
   If B > 255 : B = 255
   ElseIf B < 0 : B = 0 : EndIf
   
   Plot(x,y,RGB(R,G,B))
  
  Next x
 Next y
 
 StopDrawing()
EndProcedure
MfG Tompazi