Difference between revisions of "ImageData:getPixel"

(Updated for 11.0)
m (Changed the example.)
 
Line 20: Line 20:
  
 
== Examples ==
 
== Examples ==
Iterates over the pixels of an image and stores them in a [[sequence]].
+
When the mouse is clicked, reads the red, green, and blue value of the pixel under the mouse and uses it as the background color.
 
<source lang="lua">
 
<source lang="lua">
local image = love.image.newImageData( 'path/to/Image.png' )
+
local imagedata = love.image.newImageData('path/to/Image.png')
local pixels = {}
+
local image    = love.graphics.newImage(imagedata)
for x = 1, image:getWidth() do
+
 
     for y = 1, image:getHeight() do
+
function love.mousepressed(mx, my)
        -- Pixel coordinates range from 0 to image width - 1 / height - 1.
+
    if  0 <= mx and mx < image:getWidth()
         local pixel = image:getPixel( x - 1, y - 1 )
+
     and 0 <= my and my < image:getHeight() then
         pixels[#pixels + 1] = pixel
+
         local r, g, b = imagedata:getPixel(mx, my)
 +
         love.graphics.setBackgroundColor(r, g, b)
 
     end
 
     end
 
end
 
end
return pixels
+
 
 +
function love.draw()
 +
    love.graphics.draw(image, 0, 0)
 +
end
 
</source>
 
</source>
 +
 
== See Also ==
 
== See Also ==
 
* [[parent::ImageData]]
 
* [[parent::ImageData]]

Latest revision as of 09:25, 14 January 2019

Gets the color of a pixel at a specific position in the image.

Valid x and y values start at 0 and go up to image width and height minus 1. Non-integer values are floored.

In versions prior to 11.0, color component values were within the range of 0 to 255 instead of 0 to 1.

O.png Prior to 0.10.2, this function does not properly handle non-integer coordinates, and may produce an invalid result when non-integer values are passed.  


Function

Synopsis

r, g, b, a = ImageData:getPixel( x, y )

Arguments

number x
The position of the pixel on the x-axis.
number y
The position of the pixel on the y-axis.

Returns

number r
The red component (0-1).
number g
The green component (0-1).
number b
The blue component (0-1).
number a
The alpha component (0-1).

Examples

When the mouse is clicked, reads the red, green, and blue value of the pixel under the mouse and uses it as the background color.

local imagedata = love.image.newImageData('path/to/Image.png')
local image     = love.graphics.newImage(imagedata)

function love.mousepressed(mx, my)
    if  0 <= mx and mx < image:getWidth()
    and 0 <= my and my < image:getHeight() then
        local r, g, b = imagedata:getPixel(mx, my)
        love.graphics.setBackgroundColor(r, g, b)
    end
end

function love.draw()
    love.graphics.draw(image, 0, 0)
end

See Also


Other Languages