OK, the following is supposed to be a simple blur effect on an image, but for some reason it is changing all pixels to a single color, instead of bluring. Anyone have any ideas on what might be the problem. I am pretty sure the problem is in this code.
Function simple_blur(image_in, depth, range)
image_buffer = ImageBuffer(image_in)
new_image = CreateImage(ImageWidth(image_in), ImageHeight(image_in))
output_buffer = ImageBuffer(new_image)
For z = 1 To depth
For x = 1 To ImageWidth(image_in)
For y = 1 To ImageHeight(image_in)
For x2 = -range To range
For y2 = -range To range
red = red + GetRed(ReadPixel(x2,y2,image_buffer))
blue = blue + GetBlue(ReadPixel(x2,y2,image_buffer))
green = green + GetGreen(ReadPixel(x2,y2,image_buffer))
Next
Next
divit = ((range * 2)^2)
red = (red / divit)
green = (green / divit)
blue = (blue / divit)
WritePixel x, y, GetRGB(red,green,blue), output_buffer
Next
Next
Next
FreeImage image_in
Return new_image
End Function
Function GetRed(rgb)
Return rgb Shr 16 And %11111111
End Function
Function GetGreen(rgb)
Return rgb Shr 8 And %11111111
End Function
Function GetBlue(rgb)
Return rgb And %11111111
End Function
Function GetRGB(red,green,blue)
Return blue Or (green Shl 8) Or (red Shl 16)
End Function
|