EditableImage

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Không Thể Tạo

EditableImage cho phép bạn tạo và thao tác hình ảnh trong lúc chạy.

Để tạo một EditableImage trống, hãy sử dụng AssetService:CreateEditableImage() . Để tạo một EditableImage từ một hình ảnh hiện có, hãy sử dụng 1> Class.AssetService:CreateEditableImageAsync()1> .

EditableImage có thể được sử dụng trong bất kỳ thuộc tính Content nào có hình ảnh, chẳng hạn như ImageLabel.ImageContent hoặc 0> Class.MeshPart.TextureContent0> . Điều này

Hệ EditableImage đo lường được tính đến phía trên cùng bên trái của hình ảnh:

  • Ở phía trên cùng bên trái: (0, 0)
  • Ở dưới bên phải: (Size.X - 1, Size.Y - 1)

Khi bạn sử dụng AssetService:PromptCreateAssetAsync() để xuất bản một đối tượng có đặc tính Content để tham khảo đến một đối tượng EditableImage , hình ảnh được xuất bản như một hình ảnh và thuộc tính đ

Mở EditableImage cho Những Trải Nghiệm Đã Xuất Bản

Vì mục đích an ninh, sử dụng EditableImage bị từ chối bởi mặc định cho các trải nghiệm đã Đã xác thực IDsóng. Để bật mục dụng EditableImage, bạn phải có 13+ tuổi đượ

Các quyền

Để ngăn chặn sử dụng sai, AssetService:CreateEditableImageAsync() chỉ cho phép bạn tải và chỉnh sửa tài nguyên hình ảnh:

  • Đó là của người sáng tạo trải nghiệm (nếu trải nghiệm thuộc sở hữu của một cá nhân).
  • Đó là sở hữu của một nhóm (nếu trải nghiệm thuộc sở hữu của nhóm).
  • Đó là của người dùng đã đăng nhập Studio (nếu tập tin nơi chưa được lưu hoặc xuất bản trên Roblox).

Các API ném một lỗi nếu chúng được sử dụng để tải một tài nguyên không đáp ứng các tiêu chuẩn trên.

Tóm Tắt

Thuộc Tính

Phương Pháp

Thuộc Tính

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Kích thước của EditableImage ở pixel. Kích thước tối đa là 1024×1024. Một EditableImage không thể đượ

Phương Pháp

Destroy

void

Phá huỷ nội dung của hình ảnh, ngay lập tức thu hồi lại bộ nhớ đã sử dụng.


Lợi Nhuận

void

DrawCircle

void

Vẽ một vòng tròn ở điểm chỉ định trên EditableImage . Nếu vòng tròn là bán dính, nó sẽ được hòa hợp với các pixel đằng sau nó bằng cách sử dụng nguồn hỗn dính.

Tham Số

center: Vector2

Trung tâm của vòng tròn, so với góc trên cùng bên trái của Class.EditableImage . Các vị trí ngoài khu vực vảy bị đồng ý.

radius: number

Bán kính của vòng tròn trong pixel.

color: Color3

Màu của vòng tròn.

transparency: number

Độ trong suốt của vòng tròn với 0 được hoàn toàn mờ và 1 được hoàn toàn trong suốt.

Làm thế nào các pixel của hình ảnh nguồn được hòa hợp với các pixel của hình ảnh đã thêm.


Lợi Nhuận

void

DrawImage

void

Rút thêm EditableImage vào EditableImage này ở vị trí đã được cho. Các vị trí ngoài giới hạn của bản vẽ được cho phép để chỉ một phần của hình ảnh mới được vẽ.

Tham Số

position: Vector2

Vị trí mà góc trên cùng bên trái của hình ảnh đã thêm sẽ được vẽ.

image: Object

The EditableImage để vẽ into this EditableImage .

Làm thế nào các pixel của hình ảnh nguồn nên được hòa hợp với các pixel của hình ảnh đã thêm.


Lợi Nhuận

void

DrawImageProjected

void

Tham Số

mesh: Object
projection: Dictionary
brushConfig: Dictionary

Lợi Nhuận

void

DrawImageTransformed

void

Phương pháp này cho phép bạn vẽ một EditableImage vào cái này EditableImage với các biến hộp sọ, chẳng hạn như thu nhỏ và quay. Đối số vị trí định vị điểm pivot của hình ảnh nguồn được đặt trên hình ả

Tham Số

position: Vector2

Vị trí trong các pixel nơi điểm pivot của hình ảnh nguồn sẽ được đặt trên hình ảnh này.

scale: Vector2

Các hệ số thu nhỏ cho hình ảnh nguồn trên các trục X và Y.

rotation: number

Góc quay theo độ, được ứng dụng xung quanh điểm pivot của hình ảnh nguồn.

image: Object

Nguồn EditableImage để được vẽ vào hình ảnh này.

options: Dictionary

Từ điều khiển bổ sung:

  • CombineType : Định nghĩa cách các pixel của hình ảnh nguồn hòa với những kẻ của đích. Mặc định là Enum.ImageCombineType.AlphaBlend .
  • SamplingMode : Định nghĩa phương pháp mẫu ( ví dụ Default cho biến hình họa hoặc Pixelated cho bạn bè gần nhất). Mặc định là 0> Enum.ResamplerMode.Default0> .
  • PivotPoint : Định vị điểm pivot trong hình ảnh nguồn để thu nhỏ và quay. Mặc định là trung tâm của hình ảnh nguồn (i.e. Image.Size / 2).

Lợi Nhuận

void

Mẫu mã

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

void

Vẽ một dòng chống nghịch cùng với EditableImage một pixel dày giữa hai điểm được cung cấp.

Tham Số

Điểm xuất phát của dòng.

Điểm cuối của dòng.

color: Color3

Màu của dòng.

transparency: number

Độ trong suốt của dòng.

Làm thế nào các pixel của hình ảnh nguồn được hòa hợp với các pixel của hình ảnh đã thêm.


Lợi Nhuận

void

DrawRectangle

void

Vẽ một hình chữ nhật trên EditableImage của kích thước đã được cung cấp ở vị trí trên cùng bên trái.

Tham Số

position: Vector2

Vị trí của mặt trái trên cùng của khu vực hình chữ nhật. Giống như các phương pháp vẽ khác, điều này không thể ở ngoài giới hạn của bản vẽ EditableImage .

size: Vector2

Kích thước của hình chữ nhật để vẽ, bằng pixel.

color: Color3

Màu của hình chữ nhật.

transparency: number

Độ trong suốt của hình chữ nhật.

Làm thế nào các pixel của hình ảnh nguồn được hòa hợp với các pixel của hình ảnh đã thêm.


Lợi Nhuận

void

ReadPixelsBuffer

Ghi Song Song

Một phiên bản của ReadPixels() được trả lại một tam thế instead of một table. Mỗi số trong tam thế đều là một bit, trong khi mỗi số trong table đều là 4 bit, làm cho Class.EditableImage:ReadPixelsBuffer

Lưu ý rằng phương pháp này sử dụng alpha thay vì transparency, không giống như các phương pháp vẽ EditableImage .

Tham Số

position: Vector2

Góc trên cùng bên trái của khu vực chữ cái để đã xem.

size: Vector2

Kích thước của khu vực hình chữ nhật để đã xem.


Lợi Nhuận

Buffer được đại diện cho mỗi pixel bằng bốn octet (màu đỏ, màu xanh lá, màu xanh dương và alpha). Độ dài của buffer có thể được tính như Size.X * Size.Y * 4 octet.

Mẫu mã

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 = 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

void

Một phiên bản của WritePixels() đóng vai trò như một bảng thay vì một table. Mỗi số trong bảng trong hộp sọ là một single bit, trong khi mỗi số trong table là 4 bit, làm cho Class.EditableImage:Write

Lưu ý rằng phương pháp này sử dụng alpha thay vì transparency, không giống như các phương pháp vẽ EditableImage .

Tham Số

position: Vector2

Góc trên cùng bên trái của khu vực trụ để vẽ vào.

size: Vector2

Kích thước của khu vực hình chữ nhật của pixel để viết.

buffer: buffer

Một tam thế nơi mỗi pixel được diễn tả bởi bốn bản văn (màu đỏ, màu xanh lá cây, màu xanh dương và màu alpha). Chiều dài của tam thế nên là Size.X * Size.Y * 4 bytes.


Lợi Nhuận

void

Mẫu mã

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))
end
editableImage:WritePixelsBuffer(Vector2.zero, editableImage.Size, pixelsBuffer)

Sự Kiện