EditableImage

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile

EditableImage consente la creazione e la manipolazione delle immagini durante l'esecuzione.

Per creare un vuoto EditableImage , usa AssetService:CreateEditableImage() . Per creare un EditableImage da un'immagine esistente, usa AssetService:CreateEditableImageAsync() .

EditableImage può essere utilizzato in qualsiasi proprietà Content che prende un'immagine, come ImageLabel.ImageContent o MeshPart.TextureContent .Questo viene fatto impostando la proprietà del contenuto a Content.fromObject(editableImage) .

Il sistema di coordinate EditableImage è relativo all'angolo superiore sinistro dell'immagine:

  • A sinistra in alto: (0, 0)
  • In basso a destra: (Size.X - 1, Size.Y - 1)

Quando usi AssetService:PromptCreateAssetAsync() per pubblicare un oggetto che ha una proprietà Content che fa riferimento a un EditableImage , l'immagine modificabile viene pubblicata come immagine e la proprietà viene impostata su un nuovo ID risorsa.

Aggiorna limitazioni

Solo un singolo EditableImage può essere aggiornato per frame sul lato display.Ad esempio, se aggiorni tre oggetti EditableImage in mostra attualmente, ci vorranno tre frame per aggiornarli tutti.

Abilitazione di EditableImage per esperienze pubblicate

Per scopi di sicurezza, l'uso di EditableImage fallisce per impostazione predefinita per le esperienze pubblicate.Per abilitare l'uso di EditableImage , devi essere verificato l'età 13+ e l'ID verificato.Dopo essere stato verificato, apri Studio .Seleziona File > Impostazioni di gioco > Sicurezza e abilita il pulsante Consenti API mesh e immagine attivare/disattivare.Ricorda di rivedere i termini d'uso prima di abilitare l'interruttore.

Permessi

Per prevenire l'uso improprio, AssetService:CreateEditableImageAsync() ti consente di caricare e modificare solo risorse di immagine:

  • Che sono di proprietà del creatore dell'esperienza (se l'esperienza è di proprietà di un individuo).
  • Che sono di proprietà di un gruppo (se l'esperienza è di proprietà del Gruppo).
  • Che sono di proprietà dell'utente Studio registrato (se il file del luogo non è stato ancora salvato o pubblicato su Roblox).

Le API lanciano un errore se vengono utilizzate per caricare una risorsa che non soddisfa i criteri sopra riportati.

Sommario

Proprietà

Metodi

Proprietà

Sola Lettura
Non Replicato
Lettura Parallela

Dimensione del EditableImage in pixel.La dimensione massima è 1024×1024.Un EditableImage non può essere ridimensionato; questa proprietà è solo letta.Per ridimensionare o ritagliare un'immagine, crea un nuovo EditableImage e usa DrawImageTransformed() per trasferire i contenuti; quindi chiama Destroy() .

Metodi

Destroy

()

Distrugge i contenuti dell'immagine, recuperando immediatamente la memoria utilizzata.


Restituzioni

()

DrawCircle

()

Disegna un cerchio al punto specificato sul EditableImage .Se il cerchio è semi-trasparente, verrà mescolato con i pixel dietro di esso usando la sovrapposizione della fonte.

Parametri

center: Vector2

Centro del cerchio, rispetto all'angolo in alto a sinistra del EditableImage . Le posizioni al di fuori dei confini della tela sono consentite.

Valore predefinito: ""
radius: number

Raggio del cerchio in pixel.

Valore predefinito: ""
color: Color3

Colore del cerchio.

Valore predefinito: ""
transparency: number

Trasparenza del cerchio con 0 completamente opaco e 1 completamente trasparente.

Valore predefinito: ""

Come i pixel dell'immagine di origine vengono fusi con i pixel dell'immagine aggiunta.

Valore predefinito: ""

Restituzioni

()

DrawImage

()

Disegna un altro EditableImage in questa EditableImage alla posizione data.Le posizioni al di fuori dei confini della tela sono consentite in modo che solo una parte della nuova immagine venga disegnata.

Parametri

position: Vector2

Posizione in cui verrà disegnato l'angolo superiore sinistro dell'immagine aggiunta.

Valore predefinito: ""

Il EditableImage per disegnare in questo EditableImage .

Valore predefinito: ""

Come i pixel dell'immagine di origine dovrebbero essere mescolati con i pixel dell'immagine aggiunta.

Valore predefinito: ""

Restituzioni

()

DrawImageProjected

()

Proietta un altro EditableImage in un EditableMesh e memorizza il risultato su questo EditableImage utilizzando la configurazione di proiezione e pennello specificata.

Parametri

Il EditableMesh utilizzato per proiettarsi.

Valore predefinito: ""
projection: Dictionary

Dizionario di configurazione delle proiezioni che include i seguenti coppie chiave-valore:

  • Direction ( Vector3 ) dove il proiettore è rivolto.
  • Position ( Vector3 ) come posizione nello spazio locale rispetto alla mesh, maglia.
  • Size ( Vector3 ) come dimensione del proiettore.
  • Up ( Vector3 ) come veicolo superiore del proiettore nello spazio locale rispetto alla mesh, maglia.
Valore predefinito: ""
brushConfig: Dictionary

Dizionario di configurazione del pennello che include i seguenti coppie di chiave-valore:

  • AlphaBlendType ( Enum.ImageAlphaType ) che determina come questa proiezione mescolerà i valori alfa.
  • ColorBlendType ( Enum.ImageCombineType ) che determina come questa proiezione mescolerà i valori di colore.
  • Decal ( EditableImage ) come immagine utilizzata per la proiezione.
  • FadeAngle (number) come l'angolo in gradi per i bordi di proiezione per off.
  • BlendIntensity (number) come valore tra 0 e 1 che controlla quanto della proiezione viene mescolato nell'immagine risultante.
Valore predefinito: ""

Restituzioni

()

DrawImageTransformed

()

Questo metodo ti consente di disegnare un EditableImage in questo EditableImage con trasformazioni applicate, come ridimensionamento e rotazione.Il parametro posizione specifica dove verrà posizionato il punto di rotazione dell'immagine sorgente su questa immagine dopo le trasformazioni.Le posizioni al di fuori dei confini della tela sono consentite in modo che solo una parte della nuova immagine venga disegnata.

Parametri

position: Vector2

Posizione in pixel in cui il punto di rotazione dell'immagine sorgente verrà posizionato su questa immagine.

Valore predefinito: ""
scale: Vector2

Fattori di ridimensionamento per l'immagine di origine lungo gli assi X e Y.

Valore predefinito: ""
rotation: number

L'angolo di rotazione in gradi, applicato attorno al punto di rotazione dell'immagine sorgente.

Valore predefinito: ""

La fonte EditableImage da disegnare in questa immagine.

Valore predefinito: ""
options: Dictionary

Dizionario opzionale per una configurazione aggiuntiva:

  • CombineType : Specifica come i pixel dell'immagine di origine si mescolino con quelli della destinazione. Il predefinito è Enum.ImageCombineType.AlphaBlend .
  • SamplingMode : Specifica il metodo di campionamento (ad esempio Default per bilineare o Pixelated per il vicino più vicino). Il predefinito è Enum.ResamplerMode.Default .
  • PivotPoint : Specifica il punto di rotazione all'interno dell'immagine sorgente per la ridimensionamento e la rotazione. Il predefinito è il centro dell'immagine sorgente (cioè Image.Size / 2 ).
Valore predefinito: ""

Restituzioni

()

Campioni di codice

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

()

Disegna una linea anti-aliasata su EditableImage di un pixel tra i due punti forniti.

Parametri

Punto di partenza della linea.

Valore predefinito: ""

Punto finale della linea.

Valore predefinito: ""
color: Color3

Colore della linea.

Valore predefinito: ""
transparency: number

Trasparenza della linea.

Valore predefinito: ""

Come i pixel dell'immagine di origine vengono fusi con i pixel dell'immagine aggiunta.

Valore predefinito: ""

Restituzioni

()

DrawRectangle

()

Disegna un rettangolo sul EditableImage della dimensione data nella posizione superiore sinistra indicata.

Parametri

position: Vector2

Posizione dell'alto a sinistra del rettangolo. A differenza di altri metodi di disegno, questo non può essere al di fuori dei confini della tela del EditableImage .

Valore predefinito: ""
size: Vector2

Dimensione del rettangolo da disegnare, in pixel.

Valore predefinito: ""
color: Color3

Colore del rettangolo.

Valore predefinito: ""
transparency: number

Trasparenza del rettangolo.

Valore predefinito: ""

Come i pixel dell'immagine di origine vengono fusi con i pixel dell'immagine aggiunta.

Valore predefinito: ""

Restituzioni

()

ReadPixelsBuffer

Scrivi Parallelo

Legge una regione rettangolare di pixel da un EditableImage e la restituisce come buffer.Ogni numero nel buffer è un singolo byte, con pixel memorizzati in una sequenza di quattro byte (rosso, verde, blu e alfa).

Nota che questo metodo utilizza l'alfa invece di trasparenza, a differenza dei metodi di disegno EditableImage .

Parametri

position: Vector2

Angolo superiore sinistro della regione rettangolare di pixel da leggere.

Valore predefinito: ""
size: Vector2

Dimensione della regione rettangolare di pixel da leggere.

Valore predefinito: ""

Restituzioni

buffer in cui ogni pixel è rappresentato da quattro bytes (rosso, verde, blu e alfa rispettivamente).La lunghezza del buffer può essere calcolata come Size.X * Size.Y * 4 bytes.

Campioni di codice

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

()

Scrive una regione rettangolare di pixel in un EditableImage da un buffer.Ogni numero nel buffer è un singolo byte, con pixel memorizzati in una sequenza di quattro byte (rosso, verde, blu e alfa).

Nota che questo metodo utilizza l'alfa invece di trasparenza, a differenza dei metodi di disegno EditableImage .

Parametri

position: Vector2

Angolo superiore sinistro della regione rettangolare per disegnare i pixel.

Valore predefinito: ""
size: Vector2

Dimensione della regione rettangolare di pixel da scrivere.

Valore predefinito: ""
buffer: buffer

Un buffer in cui ogni pixel è rappresentato da quattro bytes (rosso, verde, blu e alfa rispettivamente).La lunghezza del buffer dovrebbe essere Size.X * Size.Y * 4 bytes.

Valore predefinito: ""

Restituzioni

()

Campioni di codice

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)

Eventi