EditableImage
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
EditableImage により、実行時に画像を作成および操作できます。
To create a blank EditableImage , use AssetService:CreateEditableImage() . To create an EditableImage from an existing image, use 1> Class.AssetService:CreateEditableImageAsync()1> .
Class.EditableImage は、Content プロパティの任意の画像を使用できます。たとえば、ImageLabel.ImageContent または、0> Class.MeshPart.TextureContent0> などの画像。これは、EditableImage
Class.EditableImage コーディネートシステムは、画像の左上隅に相対しています:
- 左上: (0, 0)
- 右下: (Size.X - 1, Size.Y - 1)
Class.AssetService:PromptCreateAssetAsync() を使用して、Content プロパティを持つオブジェクトを公開すると、編集可能な画像は EditableImage として公開され、プロパティは新しいアセット ID に設定されます。
概要
方法
- DrawCircle(center : Vector2,radius : number,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
指定されたポイントに円を描きます。
Class.EditableImage をこの EditableImage にドラッグします。
- DrawImageTransformed(position : Vector2,scale : Vector2,rotation : number,image : Object,options : Dictionary?):void
スケーリングと回転を含む変換を通じて、この EditableImage に画像を描画します。
2つの提供されたポイント間のラインを描きます。
- DrawRectangle(position : Vector2,size : Vector2,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
指定されたサイズの長方形を、指定された左上位置に描画します。
ピクセルの長方形の領域をバッファーに読み込みます。
画像に長方形のピクセルの領域を書き込む。
プロパティ
Size
ピクセルで EditableImage のサイズ。最大サイズは 1024×1024 です。このプロパティを大きなサイズに設定すると、サイズが 1024 に収まります。
このプロパティは、編集可能な画像のサイズを変更する キャンバス サイズを変更するが、コンテンツをサイズ変更することはありません。サイズ変更を大きくすると、新しいピクセルが RGBA 値の [0, 0, 0, 0] に
方法
Destroy
戻り値
DrawCircle
Class.EditableImage の指定されたポイントに円を描きます。円が半透明である場合、ソースオーバーブレンドを使用して、ピクセルの後ろにブレンドされます。
パラメータ
Class.EditableImage のトップ左隅に相対するサークルの中心。外のキャンバス領域は許可されています。
ピクセルでサークルの範囲。
サークルの色。
透明な円と 0 が完全に不透明であり、透明な円と 1 が完全に透明である。
ソース画像のピクセルが追加された画像のピクセルとどのようにブレンドされるか。
戻り値
DrawImage
この EditableImage をドローすると、新しい画像の一部のみが描画されます。位置の外の位置は、Class.EditableImage のドローを許可します。
パラメータ
追加された画像の左上隅にドローされる位置です。
この EditableImage に描画するための Class.EditableImage 。
ソース画像のピクセルが追加された画像のピクセルとどのように混ざるか。
戻り値
DrawImageTransformed
このメソッドは、EditableImage をこの EditableImage に変換して、スケーリングや回転などの変形を適用して、EditableImage に入ります。ポジションパラメータは、2>EditableImage2> の位置を、変形後にスキンの境界の外にある位置で指定します。5>EditableImage5>
パラメータ
この画像にソース画像のピボットポイントが置かれるピクセルの位置を指定します。
X と Y 軸に沿ってソース画像のサイズ変更ファクター。
ソース画像のピボットポイントの周りに適用された回転角度。
この画像に描画するソース EditableImage。
追加の構成のオプション辞典:
- CombineType : ソース画像のピクセルと目的地のピクセルをどのようにマッチさせるかを指定します。デフォルトは Enum.ImageCombineType.AlphaBlend です。
- SamplingMode : サンプリングメソッドを指定します (例: Default for bilinear または Pixelated for nearest neighbor) 。デフォルトは 0> enum.ResamplerMode.Default0> です。
- PivotPoint : スケーリングと回転のソース画像内のピボットポイントを指定します。デフォルトは、ソース画像の中心 (つまり Image.Size / 2) です。
戻り値
コードサンプル
local AssetService = game:GetService("AssetService")
-- Example of drawing a rotated and scaled image onto another EditableImage
local srcImage = AssetService:CreateEditableImage({ Size = Vector2.new(256, 256) })
local dstImage = AssetService:CreateEditableImage({ Size = Vector2.new(512, 512) })
-- Drawing with a rotation of 45 degrees, scaling by 2x, and placing at (100, 100)
dstImage:DrawImageTransformed(
Vector2.new(100, 100), -- Position
Vector2.new(2, 2), -- Scale
45, -- Rotation (degrees)
srcImage, -- Source image
{
CombineType = Enum.ImageCombineType.AlphaBlend, -- Optional, default is AlphaBlend
SamplingMode = Enum.ResamplerMode.Default, -- Optional, default is Default
PivotPoint = srcImage.Size / 2 -- Optional, default is center of the source image
}
)
local AssetService = game:GetService("AssetService")
-- Source image
local srcImage = AssetService:CreateEditableImageAsync(Content.fromUri(assetUri))
-- Crop area defined by offset and size
local cropOffset = Vector2.new(50, 50)
local cropSize = Vector2.new(100, 100)
-- Destination image with size of the crop area
local dstImage = AssetService:CreateEditableImage({ Size = cropSize })
-- Position (top-left corner)
local position = Vector2.new(0, 0)
-- Scale factors (no scaling)
local scale = Vector2.new(1, 1)
-- Rotation angle (no rotation)
local rotation = 0
-- Draw the source image onto the destination image with adjusted pivot to crop the image
dstImage:DrawImageTransformed(
position,
scale,
rotation,
srcImage,
{
CombineType = Enum.ImageCombineType.Overwrite,
PivotPoint = cropOffset -- Set pivot point to cropOffset to start drawing from there
}
)
DrawLine
Class.EditableImage のピクセル間の 2つの提供されたポイントの間に、anti-aliased のラインを描きます。
パラメータ
ラインの開始点。
線の終点。
行の色。
行の透明性。
ソース画像のピクセルが追加された画像のピクセルとどのようにブレンドされるか。
戻り値
DrawRectangle
Class.EditableImage のサイズを指定した左上位置にドラログします。
パラメータ
位置は、他の描画メソッドとは異なり、これは EditableImage のキャンバス境界の外にありません。
ドローする正方形のサイズ、ピクセルです。
長方形の色。
正方形の透明度。
ソース画像のピクセルが追加された画像のピクセルとどのようにブレンドされるか。
戻り値
ReadPixelsBuffer
Class.EditableImage:ReadPixels()|ReadPixels() バーファーを返す代わりにテーブルを返すバージョン。バーファーの各数は単一バイトであり、テーブルの各数は 4 バイトです。つまり、ReadPixelsBuffer() は、Class
このメソッドは、EditableImage の描画メソッドとは異なり、透明度ではなくアルファを使用します。
パラメータ
戻り値
各ピクセルが 4 バイト (レッド、グリーン、ブルー、アルファ) で表されるバッファーの場所。バッファーの長さは Size.X * Size.Y * 4 バイトで計算できます。
コードサンプル
local AssetService = game:GetService("AssetService")
local options = { Size = Vector2.new(32,32) }
local editableImage = AssetService:CreateEditableImage(options)
local pixelsBuffer = editableImage:ReadPixelsBuffer(Vector2.zero, Vector2.new(2, 1))
local color1 = Color3.fromRGB(buffer.readu8(pixelsBuffer, 0), buffer.readu8(pixelsBuffer, 1), buffer.readu8(pixelsBuffer, 2))
local transparency1 = 1 - buffer.readu8(pixelsBuffer, 3)
local color2 = Color3.fromRGB(buffer.readu8(pixelsBuffer, 4), buffer.readu8(pixelsBuffer, 5), buffer.readu8(pixelsBuffer, 6))
local transparency2 = 1 - buffer.readu8(pixelsBuffer, 7)
local averageColor = color1:Lerp(color2, 0.5)
local averageTransparency = (transparency1 + transparency2) / 2
local part = Instance.new("Part")
part.Color = averageColor
part.Transparency = averageTransparency
part.Parent = workspace
WritePixelsBuffer
Class.EditableImage:WritePixels()|WritePixels() のバージョン、バッファーを取り而える代わりにテーブルを取ります。バッファーの各数は単一バイトであり、テーブルの各数は 4 バイトです。つまり、WritePixelsBuffer()
このメソッドは、EditableImage の描画メソッドとは異なり、透明度ではなくアルファを使用します。
パラメータ
長方形の領域の左上隅で、ピクセルを描画します。
ピクセルの長方形の領域のサイズ。
各ピクセルを 4 バイト (レッド、グリーン、ブルー、アルファそれぞれ) で表現するバッファー。バッファーの長さは Size.X * Size.Y * 4 バイトです。
戻り値
コードサンプル
local AssetService = game:GetService("AssetService")
local options = { Size = Vector2.new(32,32) }
local editableImage = AssetService:CreateEditableImage(options)
local pixelsBuffer = editableImage:ReadPixelsBuffer(Vector2.zero, editableImage.Size)
for i = 1, editableImage.Size.X * editableImage.Size.Y do
local pixelIndex = (i - 1) * 4
buffer.writeu8(pixelsBuffer, pixelIndex, 255 - buffer.readu8(pixelsBuffer, pixelIndex))
buffer.writeu8(pixelsBuffer, pixelIndex + 1, 255 - buffer.readu8(pixelsBuffer, pixelIndex + 1))
buffer.writeu8(pixelsBuffer, pixelIndex + 2, 255 - buffer.readu8(pixelsBuffer, pixelIndex + 2))
end
editableImage:WritePixelsBuffer(Vector2.zero, editableImage.Size, pixelsBuffer)