ImageData

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.

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 Images so you don't have to.

function newPaddedImage(filename)
	local source = love.image.newImageData(filename)
	local w, h = source:getWidth(), source:getHeight()
	
	-- Find closest power-of-two.
	local wp = math.pow(2, math.ceil(math.log(w)/math.log(2)))
	local hp = math.pow(2, math.ceil(math.log(h)/math.log(2)))
	
	-- Only pad if needed:
	if wp ~= w or hp ~= h then
		local padded = love.image.newImageData(wp, hp)
		padded:paste(source, 0, 0)
		return love.graphics.newImage(padded)
	end
	
	return love.graphics.newImage(source)
end

Supertypes

See Also


Other Languages