villares / material-aulas

Material para ensino introdutório de programação com Python em um contexto visual
https://abav.lugaralgum.com/material-aulas/
97 stars 70 forks source link

Como salvar um desenho para usar em diferentes camadas no photoshop? #36

Closed danielappinheiro closed 4 years ago

danielappinheiro commented 4 years ago

Pensando em design e manipulação de imagem, fiquei curiosa se seria possível salvar a imagem em camadas para poder ser feita edição posteriormente :)

villares commented 4 years ago

Olá @danielappinheiro ! Os formatos mais usuais que o Processing salva não tem camadas (PNG, JPG). Estou pensando aqui quais estratégias seriam possíveis...

Tente por favor editar a descrição da sua issue pondo mais contexto. Por exemplo, qual o uso que você imaginou para isso? Você tem alguma ideia específica que usaria isso? Não é legal abrir um issue com o corpo/descrição vazio.

villares commented 4 years ago

Aqui um exemplo que salva cada "camada" em um arquivo PNG diferente. O desenho é feito em superfícies chamadas PGraphics (https://py.processing.org/reference/createGraphics.html) em vez de ser feita diretamente na tela (uma estratégia conhecida como offscreen buffer).

def setup():
    size(600, 400)

def draw():
    global c0, c1
    # camada 0
    c0 = createGraphics(600, 400)
    c0.beginDraw()
    # c0.background(200) # fundo (opaco)
    c0.clear() # limpa os pixels, deixa transparente
    c0.fill(255, 0, 0)
    c0.rect(100, 100, 100, 100)
    c0.endDraw()
    # camada 1
    c1 = createGraphics(600, 400)
    c1.beginDraw()
    c1.clear() # limpa os pixels, deixa transparente
    c1.fill(0, 0, 200)
    c1.ellipse(200, 200, 200, 200)
    c1.endDraw()
    # desenhe as camandas na tela
    image(c0, 0, 0)
    image(c1, 0, 0)

def keyPressed():
    global sinalizador
    if key == 's':
        c0.save('camada0.png')
        c1.save('camada1.png')
        saveFrame("camadas-combinadas.png")

camada0 camada1 combinadas

villares commented 4 years ago

https://github.com/villares/material-aulas/commit/ff5ca29ad2a3d88d0b6fd1e84dd4055e5a0b0aa5