Difference between revisions of "ImageData"

m (added enums list)
m
 
(9 intermediate revisions by 3 users not shown)
Line 36: Line 36:
 
| ?PrettyRemoved
 
| ?PrettyRemoved
 
}}
 
}}
 +
 +
== Supertypes ==
 +
* [[parent::Data]]
 +
* [[parent::Object]]
 +
 
== Examples ==
 
== Examples ==
=== Images that have dimensions that are not a 2^n will display incorrectly as a white rectangle on some graphics chipsets. This function pads images so they will display correctly. ===
+
 
Note that versions 0.8.0 and newer will automatically pad graphics [[Image]]s so you don't have to.
+
=== Load map from image ===
 +
(Note that this example creates a ''lot'' of tables.)
 
<source lang="lua">
 
<source lang="lua">
function newPaddedImage(filename)
+
local filename     = "image.png"
local source = love.image.newImageData(filename)
+
local imageData    = love.image.newImageData(filename)
local w, h = source:getWidth(), source:getHeight()
+
local width, height = imageData:getDimensions()
+
local map          = {}
-- Find closest power-of-two.
+
 
local wp = math.pow(2, math.ceil(math.log(w)/math.log(2)))
+
for y = 1, height do
local hp = math.pow(2, math.ceil(math.log(h)/math.log(2)))
+
map[y] = {}
+
for x = 1, width do
-- Only pad if needed:
+
local r, g, b, a = imageData:getPixel(x-1, y-1)
if wp ~= w or hp ~= h then
+
map[y][x]        = {r, g, b, a}
local padded = love.image.newImageData(wp, hp)
 
padded:paste(source, 0, 0)
 
return love.graphics.newImage(padded)
 
 
end
 
end
 
return love.graphics.newImage(source)
 
 
end
 
end
 +
 
</source>
 
</source>
== Supertypes ==
+
 
* [[parent::Data]]
 
* [[parent::Object]]
 
 
== See Also ==
 
== See Also ==
 
* [[parent::love.image]]
 
* [[parent::love.image]]

Latest revision as of 18:27, 18 February 2024

Raw (decoded) image data.

You can't draw ImageData directly to screen. See Image for that.

Constructors

Canvas:newImageData Generates ImageData from the contents of the Canvas. Added since 0.10.0
love.graphics.newScreenshot Creates a screenshot and returns the ImageData. Removed in 11.0
love.image.newImageData Creates a new ImageData object.

Functions

Data:clone Creates a new copy of the Data object. Added since 11.0
Data:getFFIPointer Gets an FFI pointer to the Data. Added since 11.3
Data:getPointer Gets a pointer to the Data.
Data:getSize Gets the Data's size in bytes.
Data:getString Gets the full Data as a string. Added since 0.9.0
ImageData:encode Encodes the ImageData to a file format and optionally writes it to the save directory.
ImageData:getDimensions Gets the width and height of the ImageData in pixels. Added since 0.9.0
ImageData:getFormat Gets the pixel format of the ImageData. Added since 11.0
ImageData:getHeight Gets the height of the ImageData in pixels.
ImageData:getPixel Gets the color of a pixel.
ImageData:getString Gets the full ImageData as a string. Removed in 0.9.0
ImageData:getWidth Gets the width of the ImageData in pixels.
ImageData:mapPixel Transform an image by applying a function to every pixel.
ImageData:paste Paste into ImageData from another source ImageData.
ImageData:setPixel Sets the color of a pixel.
Object:release Immediately destroys the object's Lua reference. Added since 11.0
Object:type Gets the type of the object as a string.
Object:typeOf Checks whether an object is of a certain type.

Enums

ImageEncodeFormat Image file formats supported by ImageData:encode.

Supertypes

Examples

Load map from image

(Note that this example creates a lot of tables.)

local filename      = "image.png"
local imageData     = love.image.newImageData(filename)
local width, height = imageData:getDimensions()
local map           = {}

for y = 1, height do
	map[y] = {}
	for x = 1, width do
		local r, g, b, a = imageData:getPixel(x-1, y-1)
		map[y][x]        = {r, g, b, a}
	end
end

See Also


Other Languages