EditableImage

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar

EditableImage ermöglicht die laufzeit-erstellung und manipulation von bildern.

Um eine leere EditableImage zu erstellen, verwende AssetService:CreateEditableImage(). Um eine EditableImage aus einem vorhandenen Bild zu erstellen, verwende AssetService:CreateEditableImageAsync().

EditableImage kann in jeder Content Eigenschaft verwendet werden, die ein Bild enthält, wie ImageLabel.ImageContent oder MeshPart.TextureContent.Dies wird durch Festlegen der Inhalts属性 auf Content.fromObject(editableImage) erledigt.

Das EditableImage Koordinatensystem ist relativ zum oberen linken Bildrand:

  • Oben links: (0, 0)
  • Unten rechts: (Size.X - 1, Size.Y - 1)

Wenn du AssetService:PromptCreateAssetAsync() verwendest, um ein Objekt zu veröffentlichen, das eine Content Eigenschaft referenziert, die auf ein EditableImage verweist, wird das bearbeitbare Bild als Bild veröffentlicht und die Eigenschaft auf eine neue Asset-ID gesetzt.

Limitierungen aktualisieren

Nur eine einzige EditableImage kann auf der Anzeigenseite pro Frame aktualisiert werden.Wenn du beispielsweise drei EditableImage Objekte aktualisierst, die derzeit angezeigt werden, dauert es drei Frames, bis alle aktualisiert sind.

Aktivierung von EditableImage für veröffentlichte Erlebnisse

Zum Sicherheitszweck scheitert die Verwendung von EditableImage für veröffentlichte Erlebnisse standardmäßig.Um die Verwendung von EditableImage zu aktivieren, musst du verifiziert werden, 13+ Alter und identitätsverifiziertzu sein.Nachdem du verifiziert wurdest, öffne Studio .Wählen Sie Datei > Spiel-Einstellungen > Sicherheit und aktivieren Sie die Mesh & Bild-APIs zulassen umschalten.Denken Sie daran, die Nutzungsbedingungen zu überprüfen, bevor Sie den umschaltenaktivieren.

Berechtigungen

Um Missbrauch zu verhindern, ermöglicht AssetService:CreateEditableImageAsync() nur das Laden und Bearbeiten von Bild-Assets:

  • Diese gehören dem Ersteller des Erlebnisses (wenn das Erlebnis von einer Person besessen wird).
  • Diese gehören einer Gruppe (wenn das Erlebnis der Gruppe gehört).
  • Diese gehören dem angemeldeten Studio-Benutzer (wenn die Platzdatei noch nicht auf Roblox gespeichert oder veröffentlicht wurde).

Die APIs werfen einen Fehler, wenn sie verwendet werden, um ein Asset zu laden, das die oben genannten Kriterien nicht erfüllt.

Zusammenfassung

Eigenschaften

Methoden

Eigenschaften

Schreibgeschützt
Nicht repliziert
Parallel lesen

Größe des EditableImage in Pixeln.Die maximale Größe beträgt 1024×1024.Ein EditableImage kann nicht skaliert werden; diese Eigenschaft ist nur lesbar.Um ein Bild zu skalieren oder zu beschneiden, erstelle ein neues EditableImage und verwende DrawImageTransformed(), um die Inhalte zu übertragen; dann rufe Destroy() auf.

Methoden

Destroy

()

Zerstört den Inhalt des Bildes und holt sofort verwendetes Speicher zurück.


Rückgaben

()

DrawCircle

()

Zeichnet einen Kreis am angegebenen Punkt auf der EditableImage .Wenn der Kreis halbtransparent ist, wird er mit den Pixeln hinter ihm mithilfe der Quelle überladen gemischt.

Parameter

center: Vector2

Mittelpunkt des Kreises im Verhältnis zur oberen linken Ecke des EditableImage. Positionen außerhalb der Grenzen der Leinwand sind erlaubt.

Standardwert: ""
radius: number

Radius des Kreises in Pixeln.

Standardwert: ""
color: Color3

Farbe des Kreises.

Standardwert: ""
transparency: number

Transparenz des Kreises mit 0 vollständig und 1 vollständig durchsichtig.

Standardwert: ""

Wie die Pixel des Quellbildes mit den Pixeln des hinzugefügten Bildes verschmolzen werden.

Standardwert: ""

Rückgaben

()

DrawImage

()

Zieht einen weiteren EditableImage in diese EditableImage an der angegebenen Position.Positionen außerhalb der Kanvas-Grenzen sind erlaubt, so dass nur ein Teil des neuen Bildes gezeichnet wird.

Parameter

position: Vector2

Position, an der die obere linke Ecke des hinzugefügten Bildes gezeichnet wird.

Standardwert: ""

Die EditableImage , um in diese EditableImage zu zeichnen.

Standardwert: ""

Wie die Pixel des Quellbilds mit den Pixeln des hinzugefügten Bilds verschmolzen werden sollen.

Standardwert: ""

Rückgaben

()

DrawImageProjected

()

Projiziert einen weiteren EditableImage in einen EditableMesh und speichert das Ergebnis auf diesem EditableImage durch Verwendung der angegebenen Projektion- und Pinselkonfiguration.

Parameter

Die EditableMesh verwendet, um einzuprojizieren.

Standardwert: ""
projection: Dictionary

Projektionskonfigurationslexikon, einschließlich der folgenden Schlüssel-Wert-Paare:

  • Direction ( Vector3 ) wo der projektor zugeneigt ist.
  • Position ( Vector3 ) als die position im lokalen raum in bezug auf das mesh.
  • Size ( Vector3 ) als größe des projektors.
  • Up ( Vector3 ) als aufvektor des projektors im lokalen raum in bezug auf das mesh.
Standardwert: ""
brushConfig: Dictionary

Pinselkonfigurationslexikon, einschließlich der folgenden Schlüssel-Wert-Paare:

  • AlphaBlendType ( Enum.ImageAlphaType ) bestimmt, wie diese projektion alpha-werte mischen wird.
  • ColorBlendType ( Enum.ImageCombineType ) bestimmt, wie diese projektion farbwerten mischen wird.
  • Decal ( EditableImage ) als das bild, das für die projektion verwendet wird.
  • FadeAngle (zahl) als winkel in grad, unter dem die ausfallen.
  • BlendIntensity (zahl) als wert zwischen 0 und 1, der kontrolliert, wie viel der projektion in das resultierende bild eingefügt wird.
Standardwert: ""

Rückgaben

()

DrawImageTransformed

()

Diese Methode lässt dich eine EditableImage in diese EditableImage mit Anwendung von Transformationen zeichnen, wie Skalierung und Rotation.Der Positions参数 gibt an, wo der Drehpunkt des Quellbildes nach der Transformation auf diesem Bild platziert wird.Positionen außerhalb der Kanvas-Grenzen sind erlaubt, so dass nur ein Teil des neuen Bildes gezeichnet wird.

Parameter

position: Vector2

Position in Pixeln, an der der Drehpunkt des Quellbildes auf diesem Bild platziert wird.

Standardwert: ""
scale: Vector2

Skalierungsfaktoren für das Quellbild entlang der Achsen X und Y.

Standardwert: ""
rotation: number

Der Rotationswinkel in Grad, der um den Pivotpunkt des Quellbildes angewendet wird.

Standardwert: ""

Die Quelle EditableImage, die in dieses Bild eingefügt werden soll.

Standardwert: ""
options: Dictionary

Optionales Wörterbuch für zusätzliche Konfiguration:

  • CombineType : Legt fest, wie sich die Pixel des Quellbildes mit denen des Ziels verschmelzen. Standard ist Enum.ImageCombineType.AlphaBlend .
  • SamplingMode : Legt die Sammelmethode fest (z. B. Default für bilinear oder Pixelated für den nächsten Nachbarn). Standard ist Enum.ResamplerMode.Default .
  • PivotPoint : Legt den Drehpunkt innerhalb des Quellbilds für Skalierung und Rotation fest. Standard ist der Mittelpunkt des Quellbilds (d.h. Image.Size / 2 ).
Standardwert: ""

Rückgaben

()

Code-Beispiele

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

()

Zieht eine anti-aliasierte Linie auf der EditableImage einen Pixel dünn zwischen den beiden angegebenen Punkten.

Parameter

Startpunkt der Linie.

Standardwert: ""

Endpunkt der Linie.

Standardwert: ""
color: Color3

Farbe der Linie.

Standardwert: ""
transparency: number

Transparenz der Linie.

Standardwert: ""

Wie die Pixel des Quellbildes mit den Pixeln des hinzugefügten Bildes verschmolzen werden.

Standardwert: ""

Rückgaben

()

DrawRectangle

()

Zieht ein Rechteck auf der EditableImage der angegebenen Größe an der angegebenen oberen linken Position.

Parameter

position: Vector2

Position des oberen linken des Rechtecks. Im Gegensatz zu anderen Zeichenmethoden kann dies nicht außerhalb der Leinwandgrenzen des EditableImage sein.

Standardwert: ""
size: Vector2

Größe des Rechtecks zum Zeichnen, in Pixeln.

Standardwert: ""
color: Color3

Farbe des Rechtecks.

Standardwert: ""
transparency: number

Transparenz des Rechtecks.

Standardwert: ""

Wie die Pixel des Quellbildes mit den Pixeln des hinzugefügten Bildes verschmolzen werden.

Standardwert: ""

Rückgaben

()

ReadPixelsBuffer

Parallel schreiben

Liest eine rechteckige Region von Pixeln aus einem EditableImage und gibt sie als Buffер zurück.Jede Zahl im Buffер ist ein einzelnes Byte, mit Pixeln, die in einer Reihe von vier Bytes gespeichert sind (rot, grün, blau und Alpha).

Beachten Sie, dass diese Methode Alpha verwendet, anstatt Transparenz, im Gegensatz zu den EditableImage Zeichenmethoden.

Parameter

position: Vector2

Obere linke Ecke der rechteckigen Region von Pixeln zum gelesen.

Standardwert: ""
size: Vector2

Größe der rechteckigen Region von Pixeln zum gelesen.

Standardwert: ""

Rückgaben

Puffer, in dem jedes Pixel durch vier Bytes repräsentiert wird (rot, grün, blau und alpha im Wechsel).Die Länge des Buffers kann als Size.X * Size.Y * 4 Bytes berechnet werden.

Code-Beispiele

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

()

Schreibt eine rechteckige Region von Pixeln in eine EditableImage von einem Buffер.Jede Zahl im Buffер ist ein einzelnes Byte, mit Pixeln, die in einer Reihe von vier Bytes gespeichert sind (rot, grün, blau und Alpha).

Beachten Sie, dass diese Methode Alpha verwendet, anstatt Transparenz, im Gegensatz zu den EditableImage Zeichenmethoden.

Parameter

position: Vector2

Obere linke Ecke der rechteckigen Region, um die Pixel hineinzuziehen.

Standardwert: ""
size: Vector2

Größe der rechteckigen Region von Pixeln, die geschrieben werden sollen.

Standardwert: ""
buffer: buffer

Ein Puffer, in dem jedes Pixel durch vier Bytes repräsentiert wird (rot, grün, blau und alpha im Wechsel).Die Länge des Buffers sollte Size.X * Size.Y * 4 Bytes betragen.

Standardwert: ""

Rückgaben

()

Code-Beispiele

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)

Ereignisse