arquivos gráficos como código fonte, contendo uma série de ações

0

Isso é bastante conjetural, então talvez não seja uma pergunta apropriada. Se você é da opinião de que eu deveria estar perguntando onde fazer essa pergunta, sinta-se à vontade para me redirecionar.

Que eu saiba, o trabalho com arquivos de imagem é realizado fazendo uma série de edições nesses arquivos, que são salvos como uma nova versão do arquivo que contém o novo estado. Embora os arquivos em si possam estar em um formato de texto analisável (embora isso não seja verdade no caso de arquivos do photoshop ou GIMP) e as ações executadas possam ser desfeitas, não conheço nenhum sistema de edição de gráficos cujo formato de arquivo seja um série de etapas executadas em um conjunto de imagens de origem; entendo que a maioria dos formatos de arquivo de imagem é de natureza declarativa e não processual.

Meu pensamento é que armazenar um conjunto de etapas em vez de um estado seria uma maneira muito sensata de salvar um arquivo de imagem, pois permitiria salvar um histórico complexo sem salvar grandes bits binários várias vezes. Isso também permitiria que o controle de versão fosse facilmente gerenciado pelos sistemas SCM, aliviando até a necessidade de bloquear arquivos de imagem, como é comumente feito quando se trabalha em mídia compartilhada no Photoshop ou GIMP.

Uma versão compilada local da imagem serviria como cache: ela seria mantida atualizada e usada para evitar a necessidade de reconstruir o estado da imagem resultante toda vez que ela fosse aberta.

Idealmente, seria possível reaplicar várias etapas na criação da imagem final ou modificar os parâmetros dessas etapas, com o mínimo de complicações. Ser capaz de extrair etapas consecutivas e parametrizá-las para uso futuro, pois as macros podem se tornar muito convenientes de implementar.

Existe um sistema útil de edição de imagens que funcione de maneira semelhante a isso? Estou ficando um pouco irritado com a falta de versatilidade percebida gimp: quero que funcione um pouco mais vim.

Dicas sobre como fazer coisas semelhantes no GIMP (talvez usando Python-fu) também são bem-vindas, embora talvez de maneira mais apropriada como comentários do que como respostas.

Meus requisitos de uso são algo de código aberto e executado no Linux, mas estou interessado em saber sobre todos e quaisquer sistemas que funcionam dessa maneira, independentemente do status de licenciamento ou portabilidade.

intuído
fonte

Respostas:

1

Bem, de certa forma, os formatos de imagem existentes podem se qualificar como o que você está procurando, já que o que é uma imagem de bitmap, mas uma série de "instruções" dizendo "definir a cor do pixel XXX para YYY"? Ou uma imagem SVG - é um arquivo XML que contém instruções como "desenhar linhas de A a B" ou "colocar um círculo azul cheio de raio R no ponto P." Entendo o que você está dizendo sobre querer algo mais que isso, um formato que armazena a série real de etapas que você realmente usou para criar a imagem, mas isso pode exigir um pouco demais. Quero dizer, não apenas entre imagens, mas mesmo para arquivos de áudio, arquivos de texto ou documentos de processamento de texto, existe algum formato de arquivo que armazene a série exata de ações usadas para criar o conteúdo? Não consigo pensar em nada.

Aqui está outra coisa em que pensar: um formato de arquivo de imagem que consiste nas instruções ordenadas para criar a imagem seria basicamente um programa ou script de computador, não algo que a maioria das pessoas consideraria realmente uma imagem. Já foi feito. Por exemplo, para as imagens que uso no meu site, geralmente gosto de criar um script contendo um conjunto de comandos que recriarão a imagem e salvo o script no meu sistema de controle de origem ou qualquer outra coisa. Os próprios comandos podem ser, por exemplo, comandos do ImageMagick; Pessoalmente, gosto de usar o pacote TikZ para o LaTeX. (Existe um editor pequeno e agradável para o TikZ, chamado CirKuit, que oferece uma visualização de atualização automática da imagem conforme você a cria; não é WYSIWYG, mas é provavelmente a coisa mais próxima que eu já vi do que você está perguntando.)

David Z
fonte
O único formato de arquivo que consigo pensar de antemão que funciona dessa maneira é o de um repositório de código-fonte como git: "ações" são armazenadas como confirmações individuais. Embora não seja totalmente fluido e não seja parametrizável, isso permite que "ações" sejam "reaplicadas", removidas da sequência ou modificadas.
intuído
A maioria dos editores oferece a capacidade de armazenar um histórico de desfazer, embora não tenha certeza de quais, se houver, são flexíveis o suficiente para permitir a modificação dos parâmetros das ações nesse histórico. Mas ei, por que não?
intuído
Obrigado pela liderança no TikZ / CirKuit, isso parece interessante. Estou realmente procurando um editor programável mais do que uma linguagem de script em si. Embora eu tenha listado vimcomo exemplo, mesmo que não seja totalmente capaz de fazer o que eu quero: por exemplo, não há como pegar os últimos comandos e armazená-los / parametrizá-los; você precisa planejar isso com antecedência gravando-os. Eu não sou (ainda?) Um emacsusuário; pode ser que emacsforneça um modelo melhor aqui.
intuído
@ intuited (3 comentários acima): Eu tinha o mesmo pensamento, que um sistema de controle de revisão é a coisa mais próxima do que você está perguntando. Muitas pessoas pensam que um RCS é bom o suficiente para gravar histórico, que não precisam manter todas as ações individuais, mas posso ver como isso seria útil em um editor de imagens. A interface do usuário pode ficar bem complicada, no entanto.
David Z
o que me fez pensar sobre isso estava apenas usando gimp, e realmente me perguntando por que não consegui voltar e alterar os parâmetros que escolhi aplicar a uma ação específica registrada em seu histórico de desfazer. Ou selecione um grupo deles e coloque-o em alguma "lista de macros" ou algo assim e, se necessário, edite-o como código em Python ou qualquer outra coisa. Estou pensando em ações como as do menu Filtros, mais do que edições "interativas", mas na teoria isso também poderia ser feito; parâmetros seriam coisas como a localização inicial de um aerógrafo.
intuído
1

Já foi feito. O formato "pict" do Macintosh anterior ao OS X era uma série de comandos codificados do QuickDraw. E você certamente pode fazer algo muito semelhante no postscript (ou seja, basta gravar as chamadas necessárias para desenhar a imagem após a definição de algum conjunto de primitivas).

dmckee
fonte
Arrumado! Embora eu esteja mais interessado em usar transformações, sombreamento e outras operações semelhantes às fornecidas pelos gimpgráficos raster existentes, seria ótimo encontrar um editor de gráficos WYSIWYG moderno que facilite o trabalho com o postscript de maneira tão versátil.
intuído