Difference between revisions of "ImageData:mapPixel"

m (Improved of descriptions.)
m
Line 1: Line 1:
 
Transform an image by applying a function to every pixel.
 
Transform an image by applying a function to every pixel.
  
This function is a [higher-order function https://en.wikipedia.org/wiki/Higher-order_function]. It takes another function as a parameter, and calls it once for each pixel in the ImageData.
+
This function is a [https://en.wikipedia.org/wiki/Higher-order_function higher-order function ]. It takes another function as a parameter, and calls it once for each pixel in the ImageData.
  
 
The passed function is called with six parameters for each pixel in turn. The parameters are numbers that represent the x and y coordinates of the pixel and its red, green, blue and alpha values. The function should return the new red, green, blue, and alpha values for that pixel.
 
The passed function is called with six parameters for each pixel in turn. The parameters are numbers that represent the x and y coordinates of the pixel and its red, green, blue and alpha values. The function should return the new red, green, blue, and alpha values for that pixel.

Revision as of 01:05, 21 October 2017

Transform an image by applying a function to every pixel.

This function is a higher-order function . It takes another function as a parameter, and calls it once for each pixel in the ImageData.

The passed function is called with six parameters for each pixel in turn. The parameters are numbers that represent the x and y coordinates of the pixel and its red, green, blue and alpha values. The function should return the new red, green, blue, and alpha values for that pixel.

function pixelFunction(x, y, r, g, b, a)
    -- template for defining your own pixel mapping function
    -- perform computations giving the new values for r, g, b and a
    -- ...
    return r, g, b, a
end

Function

Synopsis

ImageData:mapPixel( pixelFunction )

Arguments

function pixelFunction
Function to apply to every pixel.

Returns

Nothing.

Function

Available since LÖVE 0.9.0
This variant is not supported in earlier versions.

Synopsis

ImageData:mapPixel( pixelFunction, x, y, width, height )

Arguments

function pixelFunction
Function to apply to every pixel.
number x
The x-axis of the top-left corner of the area within the ImageData to apply the function to.
number y
The y-axis of the top-left corner of the area within the ImageData to apply the function to.
number width
The width of the area within the ImageData to apply the function to.
number height
The height of the area within the ImageData to apply the function to.

Returns

Nothing.

Examples

Brighten an image:

function brighten( x, y, r, g, b, a )
   r = math.min(r * 3, 255)
   g = math.min(g * 3, 255)
   b = math.min(b * 3, 255)
   return r,g,b,a
end

imageData:mapPixel( brighten )

Add colored stripes to an image:

function stripey( x, y, r, g, b, a )
   r = math.min(r * math.sin(x*100)*2, 255)
   g = math.min(g * math.cos(x*150)*2, 255)
   b = math.min(b * math.sin(x*50)*2, 255)
   return r,g,b,a
end

imageData:mapPixel( stripey )

source: http://khason.net/blog/hlsl-pixel-shader-effects-tutorial/ (broken 11/16. See blogs.microsoft.co.il or archive.org mirrors.)

See Also


Other Languages