ImageData:mapPixel
Преобразуйте изображение, применив функцию к каждому пикселю.
Эта функция является функцией высшего порядка. Она принимает другую функцию в качестве параметра и вызывает её один раз для каждого пикселя в ImageData.
Переданная функция вызывается с шестью параметрами для каждого пикселя по очереди. Параметры — числа, представляющие координаты x и y пикселя и значения красного, зеленого, синего и альфа-каналов. Функция должна вернуть новые значения красного, зеленого, синего и альфа-каналов для этого пикселя.
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 В версиях до 11.0 значения компонентов цвета находились в диапазоне от 0 до 255 вместо 0 до 1.
Функция
Описание
ImageData:mapPixel( pixelFunction, x, y, width, height )
Аргументы
function pixelFunction- Функция, применяемая к каждому пикселю.
-
number x (0)Доступно с 0.9.0 - Значение оси x левого верхнего угла области в ImageData, к которой применяется функция.
-
number y (0)Доступно с 0.9.0 - Значение оси y левого верхнего угла области в ImageData, к которой применяется функция.
-
number width (ImageData:getWidth())Доступно с 0.9.0 - Ширина области в ImageData, к которой применяется функция.
-
number height (ImageData:getHeight())Доступно с 0.9.0 - Высота области в ImageData, к которой применяется функция.
Возвращаемое значение
Ничего.
Примеры
Повысить яркость изображения:
function brighten( x, y, r, g, b, a ) r = math.min(r * 3, 1) g = math.min(g * 3, 1) b = math.min(b * 3, 1) return r,g,b,a end imageData:mapPixel( brighten )
Добавление цветных полос к изображению:
function stripey( x, y, r, g, b, a ) r = math.min(r * math.sin(x*100)*2, 1) g = math.min(g * math.cos(x*150)*2, 1) b = math.min(b * math.sin(x*50)*2, 1) return r,g,b,a end imageData:mapPixel( stripey )
Источник: http://khason.net/blog/hlsl-pixel-shader-effects-tutorial/ (сломан 11/16. См. blogs.microsoft.co.il или archive.org.)
См. также
© 2006–2020 LÖVE Development Team
Licensed under the GNU Free Documentation License, Version 1.3.
https://love2d.org/wiki/ImageData:mapPixel