Code archives/Graphics/Blur Function

This code has been declared by its author to be Public Domain code.

Download source code

Blur Function by xlsior2003
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