Code archives/Graphics/Blur Function
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Blurs an image either horizonally, vertically, or both | |||||
; ; Blur -- Horizontal and Vertical Blur routines ; 11/23/2003, by Marc van den Dikkenberg / xlsior ; ; Usage: HorizontalBlur(perct#) ; Verticalblur(perct#) ; perct# is the level of the effect, and expects a value between 50 and 99. ; ; The color value of a pixel is smeared onto its neighbours - the higher the ; value, the more it gets smeared. ; ; To get a bi-directional blur effect, simply call the horizontal and Vertical ; blur functions directly after each other, before performing a 'flip' operation. ; ; Tidbit: These two functions were created entirely by accident. I was working ; on my Monochrome() function when I accidentally forgot to declare a set of ; placeholder variables, and color information accidentally got passed on to ; the next pixel. Oh, well - maybe someone can use them. ; Graphics 640,480,16,2 SetBuffer BackBuffer() img%=LoadImage("monkey4.jpg") For t=50 To 100 Step 5 DrawImage img%,0,0 HorizontalBlur(t) VerticalBlur(t) Flip If KeyDown(1) Then End Next WaitKey() End Function HorizontalBlur(perct#) desr=0:desg=0:desb=0 If perct#<50 Then perct#=50 If perct#>99 Then perct#=99 SetBuffer BackBuffer() LockBuffer For y=0 To 479 For x=0 To 639 temp1=ReadPixel(x,y) orgb=(temp1 And $FF) orgg=(temp1 And $FF00) Shr 8 orgr=(temp1 And $FF0000) Shr 16 desr=orgr*(1-(perct#/100))+desr*(perct#/100) desg=orgg*(1-(perct#/100))+desg*(perct#/100) desb=orgb*(1-(perct#/100))+desb*(perct#/100) WritePixel x,y,desb+(desg Shl 8)+(desr Shl 16) Next Next UnlockBuffer End Function Function VerticalBlur(perct#) desr=0:desg=0:desb=0 If perct#<50 Then perct#=50 If perct#>99 Then perct#=99 SetBuffer BackBuffer() LockBuffer For x=0 To 639 For y=0 To 479 temp1=ReadPixel(x,y) orgb=(temp1 And $FF) orgg=(temp1 And $FF00) Shr 8 orgr=(temp1 And $FF0000) Shr 16 desr=orgr*(1-(perct#/100))+desr*(perct#/100) desg=orgg*(1-(perct#/100))+desg*(perct#/100) desb=orgb*(1-(perct#/100))+desb*(perct#/100) WritePixel x,y,desb+(desg Shl 8)+(desr Shl 16) Next Next UnlockBuffer End Function |
Comments
None.
Code Archives Forum