Problem mit Einschwärzungs-Funktion per Prozentangabe...

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Kekskiller

Betreff: Problem mit Einschwärzungs-Funktion per Prozentangabe...

BeitragDi, Jul 20, 2004 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bastel der Zeit an einer Funktion, mit der man Bilder
einschwärzen/verdunkeln kann, ohne andauernd im Malprogramen
rumzudümpeln. Nur gibt es irgendein Problem mit den ausgerechneten
Werten... Sie stehen mal im Minus, mal im Plus und ich bekomme
einen ganz bösartigen Fehler am Ende.

Wäre tierisch dankbar für eure Hilfe.

Code: [AUSKLAPPEN]
Const RGBplus#=2.55

Function MakeBlack(image,fading)
SetBuffer ImageBuffer(image)
LockBuffer
For zy=1 To ImageHeight(image)
 For zx=1 To ImageWidth(image)
  colprv=ReadPixelFast(zy,zx)
  red=(colprv And $FF0000)/$10000
  green=(colprv And $FF00)/$100
  bue=colprv And $FF

   redanteil#=red/RGBplus#
   redabzug#=100/redanteil#
   red=red-(redabzug#*fading)

    greenanteil#=green/RGBplus#
    greenabzug#=100/greenanteil#
    green=green-(greenabzug#*fading)

     blueanteil#=blue/RGBplus#
     blueabzug#=100/blueanteil#
     blue=blue-(blueabzug#*fading)

  colfin=(red*10000+green*100+blue)
  WritePixelFast zx,zy,colfin
 Next
Next
UnlockBuffer
SetBuffer BackBuffer()
End Function


Da werden dann die einzelnen Verdunkelungen und so ausgerechnet.
Nur klappt das irgendwie nicht, naja...

Help me!

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jul 20, 2004 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Das Image beginnt mit 0
Schreib das mal so....
Code: [AUSKLAPPEN]
For zy=0 To ImageHeight(image) -1
 For zx=0 To ImageWidth(image) -1

2. wenn du Bits nach links schieben willst mach es mit HEX Zahlen so wiie du auch die zahlen ausliest!

Code: [AUSKLAPPEN]
  colfin=(red*$10000+green*$100+blue)
  WritePixelFast zx,zy,colfin


besser und einfacher gehts mit shl und shr
und stell sicher das die Red, Blue und Green nicht über $ff hinauswächst, denn dann wird das Ergebnis verfälscht!
Hoffe mal das es das war!
[BB2D | BB3D | BB+]
 

Kekskiller

BeitragDi, Jul 20, 2004 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm, tja, das mit den Farbumwandlungen und so, habe ich aus
der Onlinehilfe in der Art entnommen. Daher wüsste ich jetzt auf
Anhieb nicht, wie ich da Shl, sowie Shr verwenden söllte.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jul 20, 2004 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Rot = (rot shl 16) ; wird um 16Bits verschoben nach links
gruen = ( gruen shl 8 )
Blau = blau

Writepixel x,y , (rot shl 16) +  ( gruen shl 8 ) + blau


Das mit dem Miniszahlen liegt am AlphaKanal,
da Integerzahlen mit dem ersten bit genzeichnen ob die Zahl positiv ist oder negativ ist kommen diese Zahlen dann schon mal vor
10000000 0000000 0000000 11111111 ; Negativ
00000000 0000000 0000000 11111111 ; Positiv
[BB2D | BB3D | BB+]
 

Kekskiller

BeitragDi, Jul 20, 2004 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso! Ich Dödel, BlitzPlus rechnet ja Alpha mit rein...
Probiere es gleich mal aus, vorerst Danke!
 

Kekskiller

BeitragDi, Jul 20, 2004 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs jetzt so gemacht:

Code: [AUSKLAPPEN]
Function SlowFading(image,fading)
SetBuffer ImageBuffer(image)
LockBuffer
For zy=1 To ImageHeight(image)
 For zx=1 To ImageWidth(image)
  colprv=ReadPixelFast(zy,zx)
  ori_red=(colprv And $FF0000)/$10000
  ori_green=(colprv And $FF00)/$100
  ori_bue=colprv And $FF

  red=ori_red Shl 16
  green=ori_green Shl 8
  bue=ori_blue

   redanteil#=red/RGBplus#
   redabzug#=100/redanteil#
   red=red-(redabzug#*fading)

    greenanteil#=green/RGBplus#
    greenabzug#=100/greenanteil#
    green=green-(greenabzug#*fading)

     blueanteil#=blue/RGBplus#
     blueabzug#=100/blueanteil#
     blue=blue-(blueabzug#*fading)

  colfin=(ori_red Shl 16)+(ori_green Shl 8)+ori_blue
  WritePixelFast zx,zy,colfin
 Next
Next
UnlockBuffer
SetBuffer BackBuffer()
End Function


Aber das will immer noch nicht klappen. Vielleicht probiere ich
doch mal die andere Variante mit Alphaeinbezug.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group