ImageData:mapPixel (Français)
Transforme une image en appliquant une fonction à chacun de ses pixels.
Cette fonction est une fonction d'ordre supérieur. Elle prend une autre fonction en paramètre, et l'appelle pour chacun des pixels de l'ImageData (données d'image).
La fonction passée est appelée en boucle avec six paramètres pour chaque pixels. Les paramètres sont des nombres représentant les coordonnées x et y du pixel, ainsi que valeurs rouge, verte, bleue et alpha. La fonction doit retournée les nouvelles valeurs rouge, verte et bleue et alpha de ce pixel.
function pixelFunction(x, y, r, v, b, a)
-- Patron pour définir votre propre fonction de mappage de pixel.
-- appliquant des calculs donnant de nouvelles valeurs pour r, v, b et a
-- ...
return r, v, b, a
end
Dans les versions antérieures à 11.0, les valeurs de composantes de couleur étaient dans une étendue allant de 0 à 255 au lieu de 0 à 1.
Contents
Fonction
Synopsis
ImageData:mapPixel( pixelFunction, x, y, width, height )
Arguments
function (Français) pixelFunction
- Fonction à appliquer pour chaque pixel.
number (Français) x (0)
- Axe des x du coin haut gauche de l'aire dans l'ImageData pour laquelle la fonction s'applique.
number (Français) y (0)
- Axe des y du coin haut gauche de l'aire dans l'ImageData pour laquelle la fonction s'applique.
number (Français) width (ImageData:getWidth())
- Largeur de l'aire de l'ImageData pour laquelle la fonction s'applique.
number (Français) height (ImageData:getHeight())
- Hauteur de l'aire de l'ImageData pour laquelle la fonction s'applique.
Retourne
Rien.
Exemples
Éclaircit une image
function brighten( x, y, r, v, b, a )
r = math.min(r * 3, 1)
v = math.min(v * 3, 1)
b = math.min(b * 3, 1)
return r,v,b,a
end
imageData:mapPixel( brighten )
Ajoute des bandes de couleur à une image
function stripey( x, y, r, v, b, a )
r = math.min(r * math.sin(x*100)*2, 1)
v = math.min(v * math.cos(x*150)*2, 1)
b = math.min(b * math.sin(x*50)*2, 1)
return r,v,b,a
end
imageData:mapPixel( stripey )
source: http://khason.net/blog/hlsl-pixel-shader-effects-tutorial/ (Cassé 11/16. Voir les archivages de la page blogs.microsoft.co.il ou archive.org.)
Teinte une image en niveaux de gris
function tint ( x, y, r, v, b, a )
local c = globalTintColor -- coueleur en tant que {r=r, v=v, b=b}
local t = (r+g+b)/3 -- valeur de gris dans l'étendue [0, 1]
if t < 0.5 then
r = 2*t*c.r
v = 2*t*c.v
b = 2*t*c.b
else
r = 2*(t + c.r - t*c.r) - 1
v = 2*(t + c.v - t*c.v) - 1
b = 2*(t + c.b - t*c.b) - 1
end
return r,v,b,a
end
imageData:mapPixel( tint )
Voir également
Autres langues
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info