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.
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.