Difference between revisions of "ImageData:mapPixel (日本語)"

m (用例)
m
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
全ピクセルへ関数を適用して画像を変形します。
 
全ピクセルへ関数を適用して画像を変形します。
  
この関数は高次関数です。別の関数を引数として扱い、ImageData にある各ピクセルに対して一括で呼び出します。
+
この関数は[https://ja.wikipedia.org/wiki/高階関数 高階関数]です。別の関数を引数として扱い、ImageData にある各ピクセルに対して一括で呼び出します。
  
 
渡されたは関数へ各ピクセルの順番により 6 つの引数から呼ばれます。引数はピクセルの x と y 座標および赤、緑、青、および透過の値を数値として表記したものです。関数はピクセルに対して赤、緑、青、および透過の値を返します。
 
渡されたは関数へ各ピクセルの順番により 6 つの引数から呼ばれます。引数はピクセルの x と y 座標および赤、緑、青、および透過の値を数値として表記したものです。関数はピクセルに対して赤、緑、青、および透過の値を返します。
Line 13: Line 13:
 
end
 
end
 
</source>
 
</source>
 +
バージョン [[11.0 (日本語)|11.0]] 以前まで、配色成分における値の範囲は小数値の 0 〜 1 ではなく整数値の 0 〜 255 です。
  
 
== 関数 ==
 
== 関数 ==
 
=== 概要 ===
 
=== 概要 ===
 
<source lang="lua">
 
<source lang="lua">
ImageData:mapPixel( pixelFunction )
+
ImageData:mapPixel( pixelFunction, x, y, width, height )
 
</source>
 
</source>
 
=== 引数 ===
 
=== 引数 ===
 
{{param|function|pixelFunction|全ピクセルへ適用する関数の引数。}}
 
{{param|function|pixelFunction|全ピクセルへ適用する関数の引数。}}
=== 返値 ===
+
{{New feature (日本語)|0.9.0|
ありません。
+
{{param|number|x (0)|関数を適用する ImageData にある領域の左上角の x 軸。}}
 
+
{{param|number|y (0)|関数を適用する ImageData にある領域の左上角の y 軸。}}
== 関数 ==
+
{{param|number|width (ImageData:getWidth())|関数を適用する ImageData にある領域の幅。}}
{{newin (日本語)|[[0.9.0]]|090|type=異形}}
+
{{param|number|height (ImageData:getHeight())|関数を適用する ImageData にある領域の高さ。}}
=== 概要 ===
+
}}
<source lang="lua">
 
ImageData:mapPixel( pixelFunction, x, y, width, height )
 
</source>
 
=== 引数 ===
 
{{param|function|全ピクセルへ適用する関数の引数。}}
 
{{param|number|x|関数を適用する ImageData にある領域の左上角の x 軸。}}
 
{{param|number|y|関数を適用する ImageData にある領域の左上角の y 軸。}}
 
{{param|number|width|関数を適用する ImageData にある領域の幅。}}
 
{{param|number|height|関数を適用する ImageData にある領域の高さ。}}
 
 
=== 返値 ===
 
=== 返値 ===
 
ありません。
 
ありません。
Line 43: Line 35:
 
<source lang="lua">
 
<source lang="lua">
 
function brighten( x, y, r, g, b, a )
 
function brighten( x, y, r, g, b, a )
   r = math.min(r * 3, 255)
+
   r = math.min(r * 3, 1)
   g = math.min(g * 3, 255)
+
   g = math.min(g * 3, 1)
   b = math.min(b * 3, 255)
+
   b = math.min(b * 3, 1)
 
   return r,g,b,a
 
   return r,g,b,a
 
end
 
end
Line 54: Line 46:
 
<source lang="lua">
 
<source lang="lua">
 
function stripey( x, y, r, g, b, a )
 
function stripey( x, y, r, g, b, a )
   r = math.min(r * math.sin(x*100)*2, 255)
+
   r = math.min(r * math.sin(x*100)*2, 1)
   g = math.min(g * math.cos(x*150)*2, 255)
+
   g = math.min(g * math.cos(x*150)*2, 1)
   b = math.min(b * math.sin(x*50)*2, 255)
+
   b = math.min(b * math.sin(x*50)*2, 1)
 
   return r,g,b,a
 
   return r,g,b,a
 
end
 
end
Line 70: Line 62:
 
{{#set:Since=000}}
 
{{#set:Since=000}}
 
== そのほかの言語 ==
 
== そのほかの言語 ==
{{i18n|ImageData:mapPixel}}
+
{{i18n (日本語)|ImageData:mapPixel}}

Latest revision as of 11:40, 17 October 2019

全ピクセルへ関数を適用して画像を変形します。

この関数は高階関数です。別の関数を引数として扱い、ImageData にある各ピクセルに対して一括で呼び出します。

渡されたは関数へ各ピクセルの順番により 6 つの引数から呼ばれます。引数はピクセルの x と y 座標および赤、緑、青、および透過の値を数値として表記したものです。関数はピクセルに対して赤、緑、青、および透過の値を返します。

function pixelFunction(x, y, r, g, b, a)
    -- ピクセル・マッピング関数を定義するための雛形です。
    -- ここで r, g, b および a へ新しい値を与えるための演算を行います
    -- ...
    return r, g, b, a
end

バージョン 11.0 以前まで、配色成分における値の範囲は小数値の 0 〜 1 ではなく整数値の 0 〜 255 です。

関数

概要

ImageData:mapPixel( pixelFunction, x, y, width, height )

引数

function pixelFunction
全ピクセルへ適用する関数の引数。
LÖVE 0.9.0 から利用可能
number x (0)
関数を適用する ImageData にある領域の左上角の x 軸。
number y (0)
関数を適用する ImageData にある領域の左上角の y 軸。
number width (ImageData:getWidth())
関数を適用する ImageData にある領域の幅。
number height (ImageData:getHeight())
関数を適用する 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日に確認。代わりに Microsoft (イスラエル) または Internet Archive のミラーページ を参照してください)

関連


そのほかの言語