Images

O jeito rápido de trabalhar pixel a pixel. app.getImage lê um cel (ou parte dele) em uma Image, um buffer de pixels que vive dentro do script: img:getPixel e img:setPixel nunca saem do script, então um laço sobre todos os pixels de um cel de 512 x 512 leva cerca de um décimo de segundo. app.putImage a grava de volta como uma única alteração, não importa quantos pixels você defina. Um pixel é um inteiro empacotado (app.pixelColor.rgba(r, g, b, a), como no Aseprite); setPixel também aceita "#rrggbb[aa]" e { r, g, b, a } (alfa padrão 255). Em sprites indexados, img:getIndex e img:setIndex trabalham com índices da paleta, então cores duplicadas continuam distintas. O padrão de uso: 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 funções)

app.getCompositeImage(frameId, rect?) — lê

Como um quadro se parece, como uma Image RGBA: todas as camadas visíveis (de imagem e de tilemap) mescladas com sua opacidade e modo de mesclagem, exatamente como na exportação, sobre rect (padrão: a tela inteira). Camadas de referência são excluídas (não são arte); fora da tela é lido como transparente. Use para conferir seu resultado, ou como fonte para img:drawImage.

  • frameId (string)
  • rect (table, opcional) — A área a ler, { x, y, width, height } na tela (inteiros; width e height de 1 a 4096). Omitido = a tela inteira.
    • x (integer) — Borda esquerda.
    • y (integer) — Borda superior.
    • width (integer 1–4096) — Largura em pixels.
    • height (integer 1–4096) — Altura em pixels.

Retorna (image): Uma Image (veja img:getPixel e os outros métodos img:).

app.getImage(layerId, frameId, rect?) — lê

Lê o cel de uma camada/quadro em uma Image: um buffer de pixels dentro do script que você lê e altera com img:getPixel / img:setPixel (e img:getIndex / img:setIndex em sprites indexados) sem custo por chamada, e depois grava de volta com app.putImage como uma única alteração. A Image cobre rect (padrão: a tela inteira), e suas coordenadas começam em 0, 0 no canto superior esquerdo do rect; img.x e img.y guardam onde isso fica na tela, que é onde app.putImage a grava por padrão. Pixels sem cel são lidos como transparentes. Um cel vinculado lê sua imagem compartilhada. Somente camadas de imagem (imagens de tiles: app.getTilePixels).

  • layerId (string)
  • frameId (string)
  • rect (table, opcional) — A área a ler, { x, y, width, height } na tela (inteiros; width e height de 1 a 4096). Omitido = a tela inteira.
    • x (integer) — Borda esquerda.
    • y (integer) — Borda superior.
    • width (integer 1–4096) — Largura em pixels.
    • height (integer 1–4096) — Altura em pixels.

Retorna (image): Uma Image (veja img:getPixel e os outros métodos img:).

app.newImage(width, height, colorMode?) — lê

Uma Image em branco (transparente), em x = 0, y = 0: um buffer de rascunho para montar pixels antes de app.putImage, ou para carimbar em outras imagens com img:drawImage. Uma indexada usa a paleta do sprite.

  • width (number) — 1-4096.
  • height (number) — 1-4096.
  • colorMode (ColorMode: "rgba" | "grayscale" | "indexed", opcional) — Padrão: o do próprio sprite. "rgba" em um sprite indexado dá uma imagem de rascunho em cores plenas (app.putImage então mapeia suas cores para a paleta).

Retorna (image): Uma Image (veja img:getPixel e os outros métodos img:).

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

Empacota uma cor em um inteiro de pixel, a forma que img:getPixel retorna e que img:setPixel recebe mais rápido (como no Aseprite).

  • r (number) — 0-255.
  • g (number) — 0-255.
  • b (number) — 0-255.
  • a (number, opcional) — 0-255, padrão 255.

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

app.pixelColor.rgbaA(pixel) — pura

O alfa de um pixel empacotado.

  • pixel (number) — Um pixel empacotado.

Retorna (number): 0-255.

app.pixelColor.rgbaB(pixel) — pura

O azul de um pixel empacotado.

  • pixel (number) — Um pixel empacotado.

Retorna (number): 0-255.

app.pixelColor.rgbaG(pixel) — pura

O verde de um pixel empacotado.

  • pixel (number) — Um pixel empacotado.

Retorna (number): 0-255.

app.pixelColor.rgbaR(pixel) — pura

O vermelho de um pixel empacotado.

  • pixel (number) — Um pixel empacotado.

Retorna (number): 0-255.

app.putImage(layerId, frameId, image, x?, y?) — altera, desfazível, recusada em uma camada bloqueada

Grava uma Image no cel de uma camada/quadro: todo pixel do retângulo que ela cobre é substituído (sem mesclagem), como uma única alteração, não importa quantos pixels você defina. O cel cresce para comportá-la e é aparado aos seus pixels visíveis; o que cai fora da tela é descartado. Escrita direta: nunca recortada pela seleção nem espelhada. Em um sprite indexado, cada pixel mantém seu índice da paleta (img:setIndex), a menos que a paleta tenha mudado desde então e aquela entrada já não mostre a cor do pixel; em um sprite em tons de cinza, as cores viram cinza. Gravar em um cel vinculado altera todos os quadros aos quais ele está vinculado.

  • layerId (string)
  • frameId (string)
  • image (image) — A Image a gravar.
  • x (number, opcional) — Onde cai o seu pixel superior esquerdo; padrão image.x (onde app.getImage a leu, 0 para app.newImage).
  • y (number, opcional) — Padrão image.y.

Não retorna nada.

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

Torna transparente um retângulo da imagem (padrão: toda ela) (o índice transparente em imagens indexadas).

  • x (number, opcional) — Padrão 0.
  • y (number, opcional) — Padrão 0.
  • width (number, opcional) — Padrão: até a borda direita.
  • height (number, opcional) — Padrão: até a borda inferior.

Não retorna nada.

img:clone() — pura

Uma cópia da imagem (mesmo tamanho, posição e modo de cor).

Retorna (image): Uma nova Image.

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

Desenha outra Image sobre esta, mesclada como uma camada (seus pixels transparentes deixam esta como estava). Indexada sobre indexada com opacidade total copia os índices.

  • image (image) — A Image a desenhar.
  • x (number, opcional) — Onde cai o seu canto superior esquerdo; padrão 0.
  • y (number, opcional) — Padrão 0.
  • opacity (number, opcional) — 0-255, padrão 255.
  • blendMode (string, opcional) — Um BlendMode, padrão "normal".

Não retorna nada.

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

Preenche um retângulo da imagem (padrão: toda ela) com uma cor.

  • color (color) — Um pixel empacotado (app.pixelColor.rgba(r, g, b, a), o que img:getPixel retorna), "#rrggbb[aa]" ou { r, g, b, a } (a tem padrão 255).
  • x (number, opcional) — Padrão 0.
  • y (number, opcional) — Padrão 0.
  • width (number, opcional) — Padrão: até a borda direita.
  • height (number, opcional) — Padrão: até a borda inferior.

Não retorna nada.

img:getIndex(x, y) — pura

Somente imagens indexadas: o índice da paleta do pixel (a partir de 0, como na ordem de app.getPalette e em app.setPaletteEntry), para que cores duplicadas da paleta possam ser distinguidas. Fora da imagem: o índice transparente.

  • x (number) — Coluna, 0 na borda esquerda da imagem.
  • y (number) — Linha, 0 no topo.

Retorna (number): 0-255.

img:getPixel(x, y) — pura

A cor de um pixel, empacotada em um inteiro (a forma rápida: nenhuma tabela é criada). Em uma imagem indexada, é a cor da paleta para o índice do pixel (transparente para o índice transparente). Fora da imagem: 0 (transparente). x e y devem ser inteiros.

  • x (number) — Coluna, 0 na borda esquerda da imagem.
  • y (number) — Linha, 0 no topo.

Retorna (number): O pixel empacotado r | g << 8 | b << 16 | a << 24: desmonte-o com app.pixelColor (ou & 255, >> 8 ...).

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

Somente imagens indexadas: define exatamente o índice da paleta do pixel, mesmo entre duas entradas com a mesma cor (ciclo de paleta, trocas de índice).

  • x (number) — Coluna, 0 na borda esquerda da imagem.
  • y (number) — Linha, 0 no topo.
  • index (number) — Um índice da paleta, a partir de 0.

Não retorna nada.

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

Define a cor de um pixel. Aceita as mesmas cores dos comandos de desenho, mais pixels empacotados, e recusa qualquer outra coisa ({ red = ... }, uma lista, uma string hex inválida) com um erro. Em uma imagem indexada, a cor vira a entrada da paleta mais próxima, mantendo o índice do pixel quando essa entrada já mostra a cor (img:setIndex escolhe um índice exato); em uma em tons de cinza, vira cinza. Fora da imagem, nada acontece.

  • x (number) — Coluna, 0 na borda esquerda da imagem.
  • y (number) — Linha, 0 no topo.
  • color (color) — Um pixel empacotado (app.pixelColor.rgba(r, g, b, a), o que img:getPixel retorna), "#rrggbb[aa]" ou { r, g, b, a } (a tem padrão 255).

Não retorna nada.

Em Markdown: images.md.