Images

Der schnelle Weg, Pixel für Pixel zu arbeiten. app.getImage liest ein Cel (oder einen Teil davon) in ein Image, einen Pixelpuffer, der im Skript lebt: img:getPixel und img:setPixel verlassen das Skript nie, sodass eine Schleife über jedes Pixel eines 512 x 512 großen Cels etwa eine Zehntelsekunde dauert. app.putImage schreibt es als eine einzige Änderung zurück, egal wie viele Pixel du setzt. Ein Pixel ist eine gepackte ganze Zahl (app.pixelColor.rgba(r, g, b, a), wie in Aseprite); setPixel nimmt auch "#rrggbb[aa]" und { r, g, b, a } (Alpha ist standardmäßig 255). Auf indizierten Sprites arbeiten img:getIndex und img:setIndex mit Palettenindizes, sodass doppelte Farben getrennt bleiben. Das übliche Muster: 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 Funktionen)

app.getCompositeImage(frameId, rect?) — liest

Wie ein Frame aussieht, als RGBA-Image: jede sichtbare Ebene (Bild und Tilemap), mit ihrer Deckkraft und ihrem Mischmodus gemischt, genau wie beim Export, über rect (Standard: die ganze Leinwand). Referenzebenen sind ausgenommen (sie sind keine Grafik); außerhalb der Leinwand wird transparent gelesen. Nutze es, um dein Ergebnis zu prüfen, oder als Quelle für img:drawImage.

  • frameId (string)
  • rect (table, optional) — Der zu lesende Bereich, { x, y, width, height } auf der Leinwand (ganze Zahlen; width und height 1-4096). Weggelassen = die ganze Leinwand.
    • x (integer) — Linker Rand.
    • y (integer) — Oberer Rand.
    • width (integer 1–4096) — Breite in Pixeln.
    • height (integer 1–4096) — Höhe in Pixeln.

Gibt zurück (image): Ein Image (siehe img:getPixel und die anderen img:-Methoden).

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

Liest das Cel einer Ebene/eines Frames in ein Image: einen Pixelpuffer im Skript, den du ohne Kosten pro Aufruf mit img:getPixel / img:setPixel liest und änderst (auf indizierten Sprites mit img:getIndex / img:setIndex) und dann mit app.putImage als eine Änderung zurückschreibst. Das Image deckt rect ab (Standard: die ganze Leinwand), und seine Koordinaten beginnen bei 0, 0 links oben im Rechteck; img.x, img.y merken sich, wo das auf der Leinwand ist, und dort schreibt app.putImage es standardmäßig hin. Pixel ohne Cel werden als transparent gelesen. Ein verknüpftes Cel liest sein geteiltes Bild. Nur Bildebenen (Tile-Bilder: app.getTilePixels).

  • layerId (string)
  • frameId (string)
  • rect (table, optional) — Der zu lesende Bereich, { x, y, width, height } auf der Leinwand (ganze Zahlen; width und height 1-4096). Weggelassen = die ganze Leinwand.
    • x (integer) — Linker Rand.
    • y (integer) — Oberer Rand.
    • width (integer 1–4096) — Breite in Pixeln.
    • height (integer 1–4096) — Höhe in Pixeln.

Gibt zurück (image): Ein Image (siehe img:getPixel und die anderen img:-Methoden).

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

Ein leeres (transparentes) Image bei x = 0, y = 0: ein Zwischenpuffer, um Pixel vor app.putImage aufzubauen oder mit img:drawImage auf andere Images zu stempeln. Ein indiziertes nutzt die Palette des Sprites.

  • width (number) — 1-4096.
  • height (number) — 1-4096.
  • colorMode (ColorMode: "rgba" | "grayscale" | "indexed", optional) — Standard: der des Sprites. "rgba" auf einem indizierten Sprite ergibt ein Vollfarb-Zwischenimage (app.putImage bildet seine Farben dann auf die Palette ab).

Gibt zurück (image): Ein Image (siehe img:getPixel und die anderen img:-Methoden).

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

Packt eine Farbe in eine Pixel-Ganzzahl, die Form, die img:getPixel zurückgibt und img:setPixel am schnellsten annimmt (wie in Aseprite).

  • r (number) — 0-255.
  • g (number) — 0-255.
  • b (number) — 0-255.
  • a (number, optional) — 0-255, Standard 255.

Gibt zurück (number): r | g << 8 | b << 16 | a << 24.

app.pixelColor.rgbaA(pixel) — rein

Das Alpha eines gepackten Pixels.

  • pixel (number) — Ein gepacktes Pixel.

Gibt zurück (number): 0-255.

app.pixelColor.rgbaB(pixel) — rein

Das Blau eines gepackten Pixels.

  • pixel (number) — Ein gepacktes Pixel.

Gibt zurück (number): 0-255.

app.pixelColor.rgbaG(pixel) — rein

Das Grün eines gepackten Pixels.

  • pixel (number) — Ein gepacktes Pixel.

Gibt zurück (number): 0-255.

app.pixelColor.rgbaR(pixel) — rein

Das Rot eines gepackten Pixels.

  • pixel (number) — Ein gepacktes Pixel.

Gibt zurück (number): 0-255.

app.putImage(layerId, frameId, image, x?, y?) — ändert, rückgängig machbar, wird auf einer gesperrten Ebene abgelehnt

Schreibt ein Image in das Cel einer Ebene/eines Frames: Jedes Pixel des Rechtecks, das es abdeckt, wird ersetzt (ohne Mischen), als eine Änderung, egal wie viele Pixel du setzt. Das Cel wächst, um es aufzunehmen, und wird auf seine sichtbaren Pixel gestutzt; was außerhalb der Leinwand liegt, fällt weg. Roh-Schreiben: nie auf die Auswahl beschnitten oder gespiegelt. Auf einem indizierten Sprite behält jedes Pixel seinen Palettenindex (img:setIndex), es sei denn, die Palette hat sich seitdem geändert und dieser Eintrag zeigt die Farbe des Pixels nicht mehr; auf einem Graustufen-Sprite werden Farben zu Grau. Das Schreiben in ein verknüpftes Cel ändert jeden Frame, mit dem es verknüpft ist.

  • layerId (string)
  • frameId (string)
  • image (image) — Das Image, das geschrieben wird.
  • x (number, optional) — Wo sein Pixel links oben landet; Standard image.x (wo app.getImage es gelesen hat, 0 bei app.newImage).
  • y (number, optional) — Standard image.y.

Gibt nichts zurück.

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

Macht ein Rechteck des Images (Standard: alles) transparent (bei indizierten Images der transparente Index).

  • x (number, optional) — Standard 0.
  • y (number, optional) — Standard 0.
  • width (number, optional) — Standard: bis zum rechten Rand.
  • height (number, optional) — Standard: bis zum unteren Rand.

Gibt nichts zurück.

img:clone() — rein

Eine Kopie des Images (gleiche Größe, Position und Farbmodus).

Gibt zurück (image): Ein neues Image.

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

Zeichnet ein anderes Image auf dieses, wie eine Ebene gemischt (seine transparenten Pixel lassen dieses unverändert). Indiziert auf indiziert bei voller Deckkraft kopiert die Indizes.

  • image (image) — Das Image, das gezeichnet wird.
  • x (number, optional) — Wo sein Pixel links oben landet; Standard 0.
  • y (number, optional) — Standard 0.
  • opacity (number, optional) — 0-255, Standard 255.
  • blendMode (string, optional) — Ein BlendMode, Standard "normal".

Gibt nichts zurück.

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

Füllt ein Rechteck des Images (Standard: alles) mit einer Farbe.

  • color (color) — Ein gepacktes Pixel (app.pixelColor.rgba(r, g, b, a), das, was img:getPixel zurückgibt), "#rrggbb[aa]" oder { r, g, b, a } (a ist standardmäßig 255).
  • x (number, optional) — Standard 0.
  • y (number, optional) — Standard 0.
  • width (number, optional) — Standard: bis zum rechten Rand.
  • height (number, optional) — Standard: bis zum unteren Rand.

Gibt nichts zurück.

img:getIndex(x, y) — rein

Nur indizierte Images: der Palettenindex des Pixels (ab 0, in der Reihenfolge von app.getPalette und app.setPaletteEntry), sodass doppelte Palettenfarben unterscheidbar sind. Außerhalb des Images: der transparente Index.

  • x (number) — Spalte, 0 am linken Rand des Images.
  • y (number) — Zeile, 0 oben.

Gibt zurück (number): 0-255.

img:getPixel(x, y) — rein

Die Farbe eines Pixels, in eine Ganzzahl gepackt (die schnelle Form: es wird keine Tabelle erzeugt). Bei einem indizierten Image ist es die Palettenfarbe des Index des Pixels (transparent beim transparenten Index). Außerhalb des Images: 0 (transparent). x und y müssen ganze Zahlen sein.

  • x (number) — Spalte, 0 am linken Rand des Images.
  • y (number) — Zeile, 0 oben.

Gibt zurück (number): Das gepackte Pixel r | g << 8 | b << 16 | a << 24: Zerlege es mit app.pixelColor (oder & 255, >> 8 ...).

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

Nur indizierte Images: setzt den Palettenindex des Pixels exakt, auch auf einen von zwei Einträgen mit derselben Farbe (Palettenzyklen, Indextausch).

  • x (number) — Spalte, 0 am linken Rand des Images.
  • y (number) — Zeile, 0 oben.
  • index (number) — Ein Palettenindex, ab 0.

Gibt nichts zurück.

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

Setzt die Farbe eines Pixels. Nimmt dieselben Farben wie die Zeichenbefehle, dazu gepackte Pixel, und lehnt alles andere ({ red = ... }, eine Liste, einen ungültigen Hex-String) mit einem Fehler ab. Bei einem indizierten Image wird die Farbe zum nächsten Paletteneintrag, wobei das Pixel seinen Index behält, wenn dieser Eintrag die Farbe schon zeigt (img:setIndex wählt einen exakten Index); bei einem Graustufen-Image wird sie grau. Außerhalb des Images passiert nichts.

  • x (number) — Spalte, 0 am linken Rand des Images.
  • y (number) — Zeile, 0 oben.
  • color (color) — Ein gepacktes Pixel (app.pixelColor.rgba(r, g, b, a), das, was img:getPixel zurückgibt), "#rrggbb[aa]" oder { r, g, b, a } (a ist standardmäßig 255).

Gibt nichts zurück.

Als Markdown: images.md.