EditableImage

사용되지 않는 항목 표시

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

만들 수 없음

EditableImage 는 이미지의 런타임 생성 및 조작을 허용합니다.

EditableImage 를 생성하려면 AssetService:CreateEditableImage() 을 사용하십시오. 기존 이미지에서 EditableImage 를 생성하려면 AssetService:CreateEditableImageAsync() 을 사용하십시오.

EditableImage 는 이미지를 가져오는 모든 Content 속성에서 사용할 수 있으며, 예를 들어 ImageLabel.ImageContent 또는 MeshPart.TextureContent 입니다.이는 콘텐츠 속성을 Content.fromObject(editableImage)로 설정하여 수행됩니다.

EditableImage 좌표 시스템은 이미지의 왼쪽 상단에 대한 상대적입니다:

  • 왼쪽 상단: (0, 0)
  • 오른쪽 하단: (Size.X - 1, Size.Y - 1)

를 사용하여 속성 를 참조하는 개체를 게시할 때, 편집 가능한 이미지는 이미지로 게시되고 속성은 새 자산 ID로 설정됩니다.

제한 업데이트

표시 측면에서 프레임당 단일 EditableImage만 업데이트할 수 있습니다.예를 들어, 현재 표시되고 있는 세 개의 EditableImage 개체를 업데이트하면 모두 업데이트하는 데 3개의 프레임이 걸립니다.

게시된 경험에 편집 가능한 이미지 활성화

보안 목적으로, 게시된 경험에서 EditableImage를 사용하면 기본적으로 실패합니다.EditableImage 사용을 활성화하려면 13세 이상 나이 확인 및 본인 인증 완료필요합니다.확인 후 Studio 를 열어 보세요.선택 파일 > 게임 설정 > 보안메시 및 이미지 API 허용 토글을 활성화하십시오.토글을 활성화하기 전에 사용 조건을 검토하는 것을 잊지 마십시오.

권한

오용을 방지하기 위해 AssetService:CreateEditableImageAsync() 이미지 자산만 로드하고 편집할 수 있습니다:

  • 경험의 크리에이터가 소유하는 것(경험이 개인에게 소유된 경우).
  • 그룹에 소유된 것(경험이 그룹에 소유된 경우).
  • 로그인한 Studio 사용자가 소유하는 항목(장소 파일이 Roblox에 저장되거나 게시되지 않은 경우).

APIs는 위의 조건을 충족하지 않는 자산을 로드하기 위해 사용되면 오류를 발생시킵니다.

요약

속성

메서드

속성

읽기 전용
복제되지 않음
병렬 읽기

픽셀 단위의 EditableImage 크기.최대 크기는 1024×1024입니다.EditableImage 크기를 변경할 수 없습니다; 이 속성은 읽기 전용입니다.이미지를 크기 조정하거나 자르려면 새로운 EditableImage 를 생성하고 DrawImageTransformed() 를 사용하여 콘텐츠를 전송한 다음 Destroy() 를 호출합니다.

메서드

Destroy

()

이미지의 콘텐츠를 즉시 삭제하고 사용된 메모리를 즉시 회수합니다.


반환

()

DrawCircle

()

EditableImage에서 지정된 지점에 원을 그립니다.원이 반투명하면 소스 오버 블렌딩을 사용하여 뒤의 픽셀과 혼합됩니다.

매개 변수

center: Vector2

원의 중심, 왼쪽 상단 모서리의 EditableImage에 대해 상대적입니다. 캔버스 경계 밖의 위치가 허용됩니다.

기본값: ""
radius: number

픽셀당 원의 반경.

기본값: ""
color: Color3

원의 색상.

기본값: ""
transparency: number

0이 완전히 불투명하고 1이 완전히 투명한 원의 투명도.

기본값: ""

원본 이미지의 픽셀과 추가된 이미지의 픽셀이 어떻게 혼합되는지.

기본값: ""

반환

()

DrawImage

()

지정된 위치에서 다른 EditableImage를 이 EditableImage에 그립니다.캔버스 경계 밖의 위치는 새 이미지의 일부만 그려지도록 허용되어 전체 이미지가 그려지지 않습니다.

매개 변수

position: Vector2

추가된 이미지의 왼쪽 상단 모서리가 그려지는 위치.

기본값: ""

EditableImage 에 그려지는 EditableImage 입니다.

기본값: ""

원본 이미지의 픽셀과 추가된 이미지의 픽셀이 어떻게 혼합되어야 하는지.

기본값: ""

반환

()

DrawImageProjected

()

지정된 프로젝션 및 브러시 구성을 사용하여 다른 EditableImageEditableMesh 에 프로젝트하고 결과를 이 EditableImage 에 저장합니다.

매개 변수

프로젝트하는 데 사용되는 EditableMesh.

기본값: ""
projection: Dictionary

다음 키-값 쌍을 포함하는 프로젝션 구성 사전:

  • Direction ( Vector3 ) 프로젝터가 향하는 곳
  • Position ( Vector3 ) 메쉬에 대한 로컬 공간의 위치로서
  • Size ( Vector3 ) 프로젝터의 크기로서.
  • Up ( Vector3 ) 프로젝터의 업 벡터로 로컬 공간에서 메쉬에 관해 ( )
기본값: ""
brushConfig: Dictionary

다음 키-값 쌍을 포함하는 브러시 구성 사전:

  • AlphaBlendType ( Enum.ImageAlphaType ) 이 프로젝션이 알파 값을 어떻게 혼합할지 결정합니다.
  • ColorBlendType ( Enum.ImageCombineType ) 이 프로젝션이 색상 값을 어떻게 혼합할지 결정합니다.
  • Decal ( EditableImage ) 프로젝션에 사용된 이미지로서.
  • FadeAngle (number) 프로젝션 가장자리가 끄기각도(도)로 프로젝션 가장자리의 각도를 나타냅니다.
  • BlendIntensity (number)는 01 사이의 값으로, 결과 이미지에 얼마나 많은 프로젝션이 혼합되는지를 제어합니다.
기본값: ""

반환

()

DrawImageTransformed

()

이 메서드를 사용하면 크기 조정 및 회전과 같은 변환이 적용된 이 에 드로잉할 수 있습니다.위치 매개 변수는 변환 후 원본 이미지의 피벗 지점이 이 이미지에 배치될 위치를 지정합니다.캔버스 경계 밖의 위치는 새 이미지의 일부만 그려지도록 허용되어 전체 이미지가 그려지지 않습니다.

매개 변수

position: Vector2

원본 이미지의 피벗 지점이 이 이미지에 배치될 픽셀 위치입니다.

기본값: ""
scale: Vector2

X축과 Y축을 따라 원본 이미지의 크기 조정 요소. Scaling factors for the source image along the X and Y axes.

기본값: ""
rotation: number

원본 이미지의 피벗 지점 주위에 적용된 회전 각도(도)입니다.

기본값: ""

이 이미지에 그려질 소스 EditableImage 입니다.

기본값: ""
options: Dictionary

추가 구성을 위한 선택적 사전:

  • CombineType : 소스 이미지의 픽셀과 대상의 픽셀이 어떻게 혼합되는지 지정합니다. 기본값은 Enum.ImageCombineType.AlphaBlend 입니다.
  • SamplingMode : 샘플링 방법을 지정합니다(예: Default 는 비선형이거나 Pixelated 는 가장 가까운 이웃). 기본값은 Enum.ResamplerMode.Default 입니다.
  • PivotPoint : 크기 조정과 회전을 위해 원본 이미지 내의 피벗 지점을 지정합니다. 기본값은 원본 이미지의 중앙입니다(즉, Image.Size / 2).
기본값: ""

반환

()

코드 샘플

The following code draws a rotated and scaled image onto another.

EditableImage:DrawImageTransformed()

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

The following code shows how cropping an image can be done using the EditableImage:DrawImageTransformed() method.

EditableImage:DrawImageTransformed() - Crop

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

()

제공된 두 점 사이의 한 픽셀 두께인 EditableImage에 반대 약선을 그립니다.

매개 변수

줄의 시작 지점.

기본값: ""

줄의 끝 지점.

기본값: ""
color: Color3

줄의 색상.

기본값: ""
transparency: number

라인의 투명도.

기본값: ""

원본 이미지의 픽셀과 추가된 이미지의 픽셀이 어떻게 혼합되는지.

기본값: ""

반환

()

DrawRectangle

()

지정된 상위 왼쪽 위치에서 지정된 크기의 직사각형을 그립니다. EditableImage 에 그립니다.

매개 변수

position: Vector2

사각형의 왼쪽 상단 위치. 다른 그리기 방법과 달리, 이는 EditableImage의 캔버스 경계 밖에 있을 수 없습니다.

기본값: ""
size: Vector2

그릴 직사각형의 크기, 픽셀로.

기본값: ""
color: Color3

사각형의 색상.

기본값: ""
transparency: number

직사각형의 투명도.

기본값: ""

원본 이미지의 픽셀과 추가된 이미지의 픽셀이 어떻게 혼합되는지.

기본값: ""

반환

()

ReadPixelsBuffer

병렬 쓰기

EditableImage에서 직사각형 픽셀 영역을 읽고 버퍼로 반환합니다.버퍼의 각 숫자는 4바이트 시퀀스(빨강, 녹색, 파란색, 알파)에 저장된 픽셀로 단일 바이트입니다.

이 메서드는 투명도 대신 알파를 사용하므로 그리기 방법 EditableImage와는 다릅니다.

매개 변수

position: Vector2

읽음픽셀 영역의 상단 왼쪽 모서리.

기본값: ""
size: Vector2

읽음픽셀의 직사각형 영역 크기.

기본값: ""

반환

각 픽셀이 4바이트로 나타나는 버퍼(빨강, 녹색, 파란색, 알파 순으로).버퍼의 길이는 Size.X * Size.Y * 4 바이트로 계산할 수 있습니다.

코드 샘플

The following code reads two pixels from a EditableImage and creates a part with the average color between them.

EditableImage:ReadPixelsBuffer()

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 = (255 - buffer.readu8(pixelsBuffer, 3)) / 255
local color2 =
Color3.fromRGB(buffer.readu8(pixelsBuffer, 4), buffer.readu8(pixelsBuffer, 5), buffer.readu8(pixelsBuffer, 6))
local transparency2 = (255 - buffer.readu8(pixelsBuffer, 7)) / 255
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

()

버퍼에서 직사각형 픽셀 영역을 EditableImage로 씁니다.버퍼의 각 숫자는 4바이트 시퀀스(빨강, 녹색, 파란색, 알파)에 저장된 픽셀로 단일 바이트입니다.

이 메서드는 투명도 대신 알파를 사용하므로 그리기 방법 EditableImage와는 다릅니다.

매개 변수

position: Vector2

픽셀을 그리기 위한 사각형 영역의 왼쪽 상단 모서리.

기본값: ""
size: Vector2

작성할 픽셀의 직사각형 영역 크기.

기본값: ""
buffer: buffer

각 픽셀이 4바이트로 나타나는 버퍼(빨강, 녹색, 파란색, 알파 순으로).버퍼의 길이는 Size.X * Size.Y * 4 바이트여야 합니다.

기본값: ""

반환

()

코드 샘플

The following code reads the pixels of a EditableImage and writes back the inverted color values of those pixels.

EditableImage:WritePixelsBuffer()

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))
-- Set alpha to 255 to make all pixels fully opaque.
buffer.writeu8(pixelsBuffer, pixelIndex + 3, 255)
end
editableImage:WritePixelsBuffer(Vector2.zero, editableImage.Size, pixelsBuffer)

이벤트