Tiniest2D - Converter PNG para matriz de cores RGBA em hexadecimal

Pedi para o ChatGPT me ajudar e saiu essa ferramenta onde escolhemos uma imagem no formato PNG e então é gerado o texto que o Tiniest2D entende.
É preciso localizar o nome do sprite na seção #SPRITES, depois fazer um enxerto do texto gerado.

Para demonstração excluí muito conteúdo da matriz de pixel para você entender a estrutura e saber onde alterar.


Antes de tudo faça uma cópia, pois qualquer erro pode corromper o seu jogo.
Localize a linha com nome do sprite, não altere ela.
Substitua o conteúdo em amarelo pelo texto gerado.


Requisitos
- Possuir o Python, na internet há muito tutorial como instalar

Dê o comando abaixo para instalar uma lib que manipula imagens
pip install pillow

Para rodar o código

python conversor.py


Após a conversão na mesma pasta vai aparecer um arquivo .txt com o final no nome _tiniest.txt


Código-fonte salve como conversor.py

from tkinter import Tk, Button, Label, filedialog, messagebox

from PIL import Image

import os



def converter():

    arquivo = filedialog.askopenfilename(

        title="Escolha um PNG",

        filetypes=[("PNG", "*.png")]

    )


    if not arquivo:

        return


    try:

        img = Image.open(arquivo).convert("RGBA")

        largura, altura = img.size


        linhas = []

        linhas.append(f"FRAME 0 {largura} {altura}")


        pixels = []


        for y in range(altura):

            for x in range(largura):

                r, g, b, a = img.getpixel((x, y))

                pixels.append(f"{r:02X}{g:02X}{b:02X}{a:02X}")


        linhas.append(" ".join(pixels))


        saida = os.path.splitext(arquivo)[0] + "_tiniest.txt"


        with open(saida, "w", encoding="utf-8") as f:

            f.write("\n".join(linhas))


        messagebox.showinfo(

            "Concluído",

            f"Arquivo gerado:\n{saida}"

        )


    except Exception as e:

        messagebox.showerror("Erro", str(e))



janela = Tk()

janela.title("PNG -> Tiniest")

janela.geometry("300x120")

janela.resizable(False, False)


Label(

    janela,

    text="Converter PNG para matriz RGBA hexadecimal"

).pack(pady=15)


Button(

    janela,

    text="Escolher PNG e Converter",

    command=converter,

    width=25

).pack()


janela.mainloop()

Comentários

Postagens mais visitadas deste blog

VR Box 2.0 - QR Code

Impostos / Arrecadação record