Spec-Zone.ru › LÖVE

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.)

См. также

  • ImageData


© 2006–2020 LÖVE Development Team
Licensed under the GNU Free Documentation License, Version 1.3.
https://love2d.org/wiki/ImageData:mapPixel

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API