EditableImage

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable

EditableImage permite la creación y manipulación de imágenes en tiempo de ejecución.

Para crear un vacío EditableImage , use AssetService:CreateEditableImage() . Para crear un EditableImage a partir de una imagen existente, use AssetService:CreateEditableImageAsync() .

EditableImage se puede utilizar en cualquier propiedad Content que tome una imagen, como ImageLabel.ImageContent o MeshPart.TextureContent.Esto se hace al establecer la propiedad de contenido en Content.fromObject(editableImage) .

El sistema de coordenadas EditableImage es relativo a la parte superior izquierda de la imagen:

  • Superior izquierda: (0, 0)
  • Abajo a la derecha: (Size.X - 1, Size.Y - 1)

Cuando usas AssetService:PromptCreateAssetAsync() para publicar un objeto que tiene una propiedad Content que se refiere a un EditableImage, la imagen editable se publica como una imagen y la propiedad se establece en una nueva ID de activo.

Actualizar limitaciones

Solo se puede actualizar un solo EditableImage en el lado de la pantalla por marco.Por ejemplo, si actualizas tres objetos EditableImage que se están mostrando actualmente, tomará tres marcos para que todos se actualicen.

Habilitando EditableImage para experiencias publicadas

Para fines de seguridad, el uso de EditableImage falla por defecto para las experiencias publicadas.Para habilitar el uso de EditableImage , debe tener edad de 13+ verificada y Identificación verificada.Después de que estés verificado, abre Studio .Seleccione Archivo > Configuración del juego > Seguridad y habilite la opción Permitir API de malla e imagen .Recuerde revisar los términos de uso antes de habilitar el alternar/activar.

Permisos

Para evitar el mal uso, AssetService:CreateEditableImageAsync() solo te permite cargar y editar recursos de imagen:

  • Que son propiedad del creador de la experiencia (si la experiencia es propiedad de un individuo).
  • Que son propiedad de un grupo (si la experiencia es propiedad del grupo).
  • Que son propiedad del usuario de Studio iniciado de sesión (si el archivo del lugar aún no se ha guardado o publicado en Roblox).

Las APIs lanzan un error si se usan para cargar un activo que no cumple con los criterios anteriores.

Resumen

Propiedades

Métodos

Propiedades

Solo lectura
No replicado
Leer paralelo

Tamaño del EditableImage en píxeles.El tamaño máximo es 1024×1024.Un EditableImage no se puede redimensionar; esta propiedad es de solo lectura.Para cambiar el tamaño o recortar una imagen, crea un nuevo EditableImage y usa DrawImageTransformed() para transferir el contenido; luego llama Destroy() .

Métodos

Destroy

()

Destruye el contenido de la imagen, recuperando inmediatamente la memoria utilizada.


Devuelve

()

DrawCircle

()

Dibuja un círculo en el punto especificado en el EditableImage .Si el círculo es semitransparente, se mezclará con los píxeles detrás de él usando la fusión de fuente.

Parámetros

center: Vector2

Centro del círculo, respecto a la esquina superior izquierda del EditableImage . Se permiten posiciones fuera de los límites del lienzo.

Valor predeterminado: ""
radius: number

Radio del círculo en píxeles.

Valor predeterminado: ""
color: Color3

Color del círculo.

Valor predeterminado: ""
transparency: number

Transparencia del círculo con 0 siendo completamente opaco y 1 siendo completamente transparente.

Valor predeterminado: ""

Cómo los píxeles de la imagen fuente se mezclan con los píxeles de la imagen agregada.

Valor predeterminado: ""

Devuelve

()

DrawImage

()

Dibuja otro EditableImage en esta posición EditableImage en la posición dada.Se permiten posiciones fuera de los límites del lienzo de modo que solo se dibuje una parte de la nueva imagen.

Parámetros

position: Vector2

Posición en la que se dibujará la esquina superior izquierda de la imagen agregada.

Valor predeterminado: ""

El EditableImage para dibujar en este EditableImage .

Valor predeterminado: ""

Cómo los píxeles de la imagen fuente deben mezclarse con los píxeles de la imagen agregada.

Valor predeterminado: ""

Devuelve

()

DrawImageProjected

()

Proyecta otro EditableImage en un EditableMesh y almacena el resultado en este EditableImage usando la configuración de proyección y pincel especificada.

Parámetros

El EditableMesh utilizado para proyectar.

Valor predeterminado: ""
projection: Dictionary

Diccionario de configuración de proyección que incluye los siguientes pares de clave-valor:

  • Direction ( Vector3 ) donde el proyector está apuntando.
  • Position ( Vector3 ) como la posición en el espacio local con respecto a la malla.
  • Size ( Vector3 ) como el tamaño del proyector.
  • Up ( Vector3 ) como vector ascendente del proyector en el espacio local con respecto a la malla.
Valor predeterminado: ""
brushConfig: Dictionary

Diccionario de configuración de pincel que incluye los siguientes pares de clave-valor:

  • AlphaBlendType ( Enum.ImageAlphaType ) que determina cómo se mezclarán los valores alfa de esta proyección.
  • ColorBlendType ( Enum.ImageCombineType ) que determina cómo se mezclarán los valores de color de esta proyección.
  • Decal ( EditableImage ) como la imagen utilizada para la proyección.
  • FadeAngle (número) como el ángulo en grados para que los bordes de proyección se desactivado.
  • BlendIntensity (número) como el valor entre 0 y 1 que controla cuánta de la proyección se mezcla en la imagen resultante.
Valor predeterminado: ""

Devuelve

()

DrawImageTransformed

()

Este método te permite dibujar un EditableImage en este EditableImage con transformaciones aplicadas, como el escalado y la rotación.El parámetro de posición especifica dónde se colocará el punto pivote de la imagen fuente en esta imagen después de las transformaciones.Se permiten posiciones fuera de los límites del lienzo de modo que solo se dibuje una parte de la nueva imagen.

Parámetros

position: Vector2

Posición en píxeles donde se colocará el punto de pivote de la imagen fuente en esta imagen.

Valor predeterminado: ""
scale: Vector2

Factores de escalado para la imagen de origen a lo largo de los ejes X y Y.

Valor predeterminado: ""
rotation: number

El ángulo de rotación en grados, aplicado alrededor del punto de pivote de la imagen fuente.

Valor predeterminado: ""

La fuente EditableImage para dibujar en esta imagen.

Valor predeterminado: ""
options: Dictionary

Diccionario opcional para configuración adicional:

  • CombineType : Especifica cómo se mezclan los píxeles de la imagen de origen con los de la imagen de destino. El predeterminado es Enum.ImageCombineType.AlphaBlend .
  • SamplingMode : Especifica el método de muestreo (por ejemplo, Default para bilinear o Pixelated para el vecino más cercano). El predeterminado es Enum.ResamplerMode.Default .
  • PivotPoint : Especifica el punto de pivote dentro de la imagen fuente para el escalado y la rotación. El predeterminado es el centro de la imagen fuente (es decir, Image.Size / 2 ).
Valor predeterminado: ""

Devuelve

()

Muestras de código

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

()

Dibuja una línea anti-aliada de un píxel en el EditableImage uno entre los dos puntos proporcionados.

Parámetros

Punto de inicio de la línea.

Valor predeterminado: ""

Punto final de la línea.

Valor predeterminado: ""
color: Color3

Color de la línea.

Valor predeterminado: ""
transparency: number

Transparencia de la línea.

Valor predeterminado: ""

Cómo los píxeles de la imagen fuente se mezclan con los píxeles de la imagen agregada.

Valor predeterminado: ""

Devuelve

()

DrawRectangle

()

Dibuja un rectángulo en el EditableImage de la dimensión dada en la posición superior izquierda dada.

Parámetros

position: Vector2

Posición de la parte superior izquierda del rectángulo. A diferencia de otros métodos de dibujo, esto no puede estar fuera de los límites del lienzo del EditableImage .

Valor predeterminado: ""
size: Vector2

Tamaño del rectángulo para dibujar, en píxeles.

Valor predeterminado: ""
color: Color3

Color del rectángulo.

Valor predeterminado: ""
transparency: number

Transparencia del rectángulo.

Valor predeterminado: ""

Cómo los píxeles de la imagen fuente se mezclan con los píxeles de la imagen agregada.

Valor predeterminado: ""

Devuelve

()

ReadPixelsBuffer

Escribir paralelo

Lee una región rectangular de píxeles de un EditableImage y la devuelve como un búfer.Cada número en el búfer es un solo byte, con píxeles almacenados en una secuencia de cuatro bytes (rojo, verde, azul y alfa).

Tenga en cuenta que este método usa alfa en lugar de transparencia, a diferencia de los métodos de dibujo EditableImage.

Parámetros

position: Vector2

Esquina superior izquierda de la región rectangular de píxeles para leído.

Valor predeterminado: ""
size: Vector2

Tamaño de la región rectangular de píxeles para leído.

Valor predeterminado: ""

Devuelve

Buffering donde cada píxel se representa por cuatro bytes (rojo, verde, azul y alfa respectivamente).La longitud del búfer se puede calcular como Size.X * Size.Y * 4 bytes.

Muestras de código

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

()

Escribe una región rectangular de píxeles a un EditableImage desde un buffer.Cada número en el búfer es un solo byte, con píxeles almacenados en una secuencia de cuatro bytes (rojo, verde, azul y alfa).

Tenga en cuenta que este método usa alfa en lugar de transparencia, a diferencia de los métodos de dibujo EditableImage.

Parámetros

position: Vector2

Esquina superior izquierda de la región rectangular para dibujar los píxeles.

Valor predeterminado: ""
size: Vector2

Tamaño de la región rectangular de píxeles para escribir.

Valor predeterminado: ""
buffer: buffer

Un buffer donde cada píxel se representa por cuatro bytes (rojo, verde, azul y alfa respectivamente).La longitud del búfer debe ser Size.X * Size.Y * 4 bytes.

Valor predeterminado: ""

Devuelve

()

Muestras de código

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)

Eventos