Imágenes

La forma rápida de trabajar píxel por píxel. app.getImage lee una celda (o parte de ella) en una Image, un búfer de píxeles que vive dentro del script: img:getPixel e img:setPixel nunca salen del script, así que un bucle sobre todos los píxeles de una celda de 512 x 512 tarda alrededor de una décima de segundo. app.putImage la escribe de vuelta como un único cambio, sin importar cuántos píxeles hayas establecido. Un píxel es un entero empaquetado (app.pixelColor.rgba(r, g, b, a), como en Aseprite); setPixel también acepta "#rrggbb[aa]" y { r, g, b, a } (alfa es 255 por defecto). En sprites indexados, img:getIndex e img:setIndex trabajan con índices de paleta, de modo que los colores duplicados se mantienen separados. El patrón habitual: local img = app.getImage(layer, frame); for y = 0, img.height - 1 do for x = 0, img.width - 1 do img:setPixel(x, y, ...) end end; app.putImage(layer, frame, img). (17 funciones)

app.getCompositeImage(frameId, rect?) — lee

Cómo se ve un fotograma, como una Image RGBA: cada capa visible (de imagen y de tilemap) mezclada con su opacidad y su modo de fusión, exactamente como se exporta, sobre rect (por defecto todo el lienzo). Las capas de referencia se excluyen (no son arte); lo que queda fuera del lienzo se lee como transparente. Úsala para comprobar tu resultado, o como origen para img:drawImage.

  • frameId (string)
  • rect (table, opcional) — El área que se lee, { x, y, width, height } en el lienzo (enteros; width y height de 1 a 4096). Omitida = todo el lienzo.
    • x (integer) — Borde izquierdo.
    • y (integer) — Borde superior.
    • width (integer 1–4096) — Ancho en píxeles.
    • height (integer 1–4096) — Alto en píxeles.

Devuelve (image): Una Image (consulta img:getPixel y los demás métodos img:).

app.getImage(layerId, frameId, rect?) — lee

Lee la celda de una capa/fotograma en una Image: un búfer de píxeles dentro del script que lees y cambias con img:getPixel / img:setPixel (e img:getIndex / img:setIndex en sprites indexados) sin coste por llamada, y luego escribes de vuelta con app.putImage como un único cambio. La Image cubre rect (por defecto todo el lienzo) y sus coordenadas empiezan en 0, 0 en la esquina superior izquierda del rect; img.x, img.y recuerdan dónde queda eso en el lienzo, que es donde app.putImage la escribe por defecto. Los píxeles sin celda se leen como transparentes. Una celda vinculada lee su imagen compartida. Solo capas de imagen (imágenes de tiles: app.getTilePixels).

  • layerId (string)
  • frameId (string)
  • rect (table, opcional) — El área que se lee, { x, y, width, height } en el lienzo (enteros; width y height de 1 a 4096). Omitida = todo el lienzo.
    • x (integer) — Borde izquierdo.
    • y (integer) — Borde superior.
    • width (integer 1–4096) — Ancho en píxeles.
    • height (integer 1–4096) — Alto en píxeles.

Devuelve (image): Una Image (consulta img:getPixel y los demás métodos img:).

app.newImage(width, height, colorMode?) — lee

Una Image en blanco (transparente), en x = 0, y = 0: un búfer de trabajo para construir píxeles antes de app.putImage, o para estampar sobre otras imágenes con img:drawImage. Una indexada usa la paleta del sprite.

  • width (number) — 1-4096.
  • height (number) — 1-4096.
  • colorMode (ColorMode: "rgba" | "grayscale" | "indexed", opcional) — Por defecto el del propio sprite. "rgba" en un sprite indexado da una imagen de trabajo a todo color (app.putImage entonces asigna sus colores a la paleta).

Devuelve (image): Una Image (consulta img:getPixel y los demás métodos img:).

app.pixelColor.rgba(r, g, b, a?) — pura

Empaqueta un color en un entero de píxel, la forma que devuelve img:getPixel y que img:setPixel acepta más rápido (como en Aseprite).

  • r (number) — 0-255.
  • g (number) — 0-255.
  • b (number) — 0-255.
  • a (number, opcional) — 0-255, por defecto 255.

Devuelve (number): r | g << 8 | b << 16 | a << 24.

app.pixelColor.rgbaA(pixel) — pura

El alfa de un píxel empaquetado.

  • pixel (number) — Un píxel empaquetado.

Devuelve (number): 0-255.

app.pixelColor.rgbaB(pixel) — pura

El azul de un píxel empaquetado.

  • pixel (number) — Un píxel empaquetado.

Devuelve (number): 0-255.

app.pixelColor.rgbaG(pixel) — pura

El verde de un píxel empaquetado.

  • pixel (number) — Un píxel empaquetado.

Devuelve (number): 0-255.

app.pixelColor.rgbaR(pixel) — pura

El rojo de un píxel empaquetado.

  • pixel (number) — Un píxel empaquetado.

Devuelve (number): 0-255.

app.putImage(layerId, frameId, image, x?, y?) — modifica, deshacible, se rechaza en una capa bloqueada

Escribe una Image en la celda de una capa/fotograma: cada píxel del rectángulo que cubre se reemplaza (sin mezcla), como un único cambio sin importar cuántos píxeles hayas establecido. La celda crece para contenerla y se recorta a sus píxeles visibles; lo que cae fuera del lienzo se descarta. Escritura directa: nunca se recorta a la selección ni se refleja. En un sprite indexado cada píxel conserva su índice de paleta (img:setIndex), salvo que la paleta haya cambiado desde entonces y esa entrada ya no muestre el color del píxel; en un sprite en escala de grises los colores pasan a gris. Escribir en una celda vinculada cambia todos los fotogramas a los que está vinculada.

  • layerId (string)
  • frameId (string)
  • image (image) — La Image que se escribe.
  • x (number, opcional) — Dónde cae su píxel superior izquierdo; por defecto image.x (donde la leyó app.getImage, 0 para app.newImage).
  • y (number, opcional) — Por defecto image.y.

No devuelve nada.

img:clear(x?, y?, width?, height?) — pura

Deja transparente un rectángulo de la imagen (por defecto toda) (el índice transparente en imágenes indexadas).

  • x (number, opcional) — Por defecto 0.
  • y (number, opcional) — Por defecto 0.
  • width (number, opcional) — Por defecto hasta el borde derecho.
  • height (number, opcional) — Por defecto hasta el borde inferior.

No devuelve nada.

img:clone() — pura

Una copia de la imagen (mismo tamaño, posición y modo de color).

Devuelve (image): Una nueva Image.

img:drawImage(image, x?, y?, opacity?, blendMode?) — pura

Dibuja otra Image sobre esta, mezclada como una capa (sus píxeles transparentes dejan esta como estaba). Indexada sobre indexada con opacidad total copia los índices.

  • image (image) — La Image que se dibuja.
  • x (number, opcional) — Dónde cae su esquina superior izquierda; por defecto 0.
  • y (number, opcional) — Por defecto 0.
  • opacity (number, opcional) — 0-255, por defecto 255.
  • blendMode (string, opcional) — Un BlendMode, por defecto "normal".

No devuelve nada.

img:fill(color, x?, y?, width?, height?) — pura

Rellena un rectángulo de la imagen (por defecto toda) con un color.

  • color (color) — Un píxel empaquetado (app.pixelColor.rgba(r, g, b, a), lo que devuelve img:getPixel), "#rrggbb[aa]" o { r, g, b, a } (a es 255 por defecto).
  • x (number, opcional) — Por defecto 0.
  • y (number, opcional) — Por defecto 0.
  • width (number, opcional) — Por defecto hasta el borde derecho.
  • height (number, opcional) — Por defecto hasta el borde inferior.

No devuelve nada.

img:getIndex(x, y) — pura

Solo imágenes indexadas: el índice de paleta del píxel (desde 0, como en el orden de app.getPalette y app.setPaletteEntry), de modo que se puedan distinguir los colores de paleta duplicados. Fuera de la imagen: el índice transparente.

  • x (number) — Columna, 0 en el borde izquierdo de la imagen.
  • y (number) — Fila, 0 arriba.

Devuelve (number): 0-255.

img:getPixel(x, y) — pura

El color de un píxel, empaquetado en un entero (la forma rápida: no se crea ninguna tabla). En una imagen indexada es el color de paleta del índice del píxel (transparente para el índice transparente). Fuera de la imagen: 0 (transparente). x e y deben ser enteros.

  • x (number) — Columna, 0 en el borde izquierdo de la imagen.
  • y (number) — Fila, 0 arriba.

Devuelve (number): El píxel empaquetado r | g << 8 | b << 16 | a << 24: descomponlo con app.pixelColor (o & 255, >> 8 ...).

img:setIndex(x, y, index) — pura

Solo imágenes indexadas: establece con exactitud el índice de paleta del píxel, incluso a una de dos entradas con el mismo color (ciclo de paleta, intercambio de índices).

  • x (number) — Columna, 0 en el borde izquierdo de la imagen.
  • y (number) — Fila, 0 arriba.
  • index (number) — Un índice de paleta, desde 0.

No devuelve nada.

img:setPixel(x, y, color) — pura

Establece el color de un píxel. Acepta los mismos colores que los comandos de dibujo, más píxeles empaquetados, y rechaza cualquier otra cosa ({ red = ... }, una lista, una cadena hex incorrecta) con un error. En una imagen indexada el color pasa a ser la entrada de paleta más cercana, conservando el índice del píxel cuando esa entrada ya muestra el color (img:setIndex elige un índice exacto); en una en escala de grises pasa a gris. Fuera de la imagen no ocurre nada.

  • x (number) — Columna, 0 en el borde izquierdo de la imagen.
  • y (number) — Fila, 0 arriba.
  • color (color) — Un píxel empaquetado (app.pixelColor.rgba(r, g, b, a), lo que devuelve img:getPixel), "#rrggbb[aa]" o { r, g, b, a } (a es 255 por defecto).

No devuelve nada.

En Markdown: images.md.