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

KekskillerBetreff: Problem mit Einschwärzungs-Funktion per Prozentangabe... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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! |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ä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. |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Achso! Ich Dödel, BlitzPlus rechnet ja Alpha mit rein...
Probiere es gleich mal aus, vorerst Danke! |
||
Kekskiller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group