Com uma ajudinha do Python

Recentemente a empresa onde eu hospedava meu site/portfólio resolveu acabar com os planos como os meus e eu resolvi não continuar lá. Aquelas chatices, seu site está por todo lado, mas teria que ser uma outra solução.

Fui olhar as coisas que eu tinha prontas de uns anos atrás e acabei achando uma galeria em Java Script que eu usei num portfolio meu e também no site do RXDCC. Com meus conhecimentos dos anos mais recentes mergulhei novamente naquele projeto para fazer inúmeros ajustes e deixa a coisa um pouquinho mais agradável.

Essa galeria funciona bem na maioria dos navegadores, mas ela requer um HTML que cresce bastante com o número de fotos. Eu queria começar novamente com 93 imagens (antes tinha apenas 20). Então teria que escrever um monte de links repetitivos, como esse exemplo abaixo:

Isso é apenas uma parte do arquivo HTML, mas como tem várias partes que se repetem, escrevi um script simples de Python para automatizar isso:

Depois foi só abrir links.txt, copiar e colar no HTML, feito.

Depois me coloquei um outro desafio, reestruturar o site do zero e pensar numa maneira interessante para dar acesso diretamente a cada um dos ensaios que estão ali, ao invés de forçar o “visitante” a olhar tudo.

Um index.html, um styles.css e um script.js bem simples. Simplesmente copiei a pasta de imagens de um para outro, mas não fiquei satisfeito com as informações aparecendo no abre de cada ensaio, modifiquei para dar um pouco mais de vida a eles.

Uma pasta com 105 imagens. Nesse caso usei o Python para gerar a lista de imagens que está no script.js da mesma maneira que eu fiz no outro caso. E esse resultado está aqui.

Em busca de novos caminhos para o processamento de imagens digitais

Comecei na fotografia em 1991, em um país do terceiro mundo. Desde então, sou fotógrafo profissional. Eventualmente, me mudei para um país europeu. Ao longo do tempo, experimentei muitos caminhos diferentes e, na maior parte desse período, me considerei um artista. No entanto, foi a imagem digital profissional que me sustentou. Investiguei programação por muito tempo e entrei na onda do Processing quando foi lançado, assim como o Arduino, entre outros. Passei por várias oportunidades de trabalhar com processamento de imagens, sem imaginar o quanto isso poderia ser divertido. Sempre fui, sem dúvida, um fotógrafo experimental.

Muitos anos depois, enquanto trabalhava como fotógrafo de e-commerce, tive acesso a uma plataforma de aprendizagem. Durante uma baixa temporada, decidi refrescar e expandir minhas habilidades em programação e, logo, fui capaz de realizar coisas que nunca pensei serem possíveis, especialmente depois de tanto tempo.

Recentemente fui demitido e isso foi muito bem-vindo. Terei tempo para pensar e planejar meus próximos passos, o que tem sido ótimo, de verdade. Usei esse tempo até agora para desenvolver aplicativos simples. Recentemente, terminei um trio de aplicativos que refletem a fotografia experimental que venho praticando todos esses anos.

Um lida com a mistura de canais de cores, outro cria scans de fenda a partir de vídeos (que era a sensação quando o Processing foi lançado), e o último aplica solarização em imagens. Tudo isso são técnicas que pratiquei em primeira mão no mundo analógico ou no digital experimental. Tem sido realmente interessante pesquisar mais sobre a matemática por trás das imagens.

Enfim, agora estou em busca de novos caminhos para o processamento de imagens digitais. Alguém tem alguma idéia?

Originalmente publicado em https://news.ycombinator.com/item?id=40575014

Slitscans a partir de vídeos

Fazer slitscans a partir de vídeos é uma moda que já passou. A maioria dos programas que você encontra no GitHub para isso já tem quase 10 anos que foram publicados. Naquela época eu estava experimentando com a linguagem Processing para fazer a mesma coisa.

O tempo passa e me encontrei querendo colocar minhas habilidades de Python em prática, foi quando lembrei desses programas e resolvi fazer algo parecido, mas com um toque diferente.

Tenho diversos vídeos de timelapse feitos ao longos dos anos. Sempre mantive a câmara estacionária e deixava a paisagem mudar gradualmente ao longo do dia. Bom, e se eu usasse um software de slitscan para varrer a imagem e juntar uma linha vertical de cada momento em um único frame que resumisse o dia? Seria visualmente interessante esse panorama?

Para experimentar seria importante um programa mais complexo de slitscan com possibilidade de estabelecer a posição de início do slit, a sua velocidade ao longo do frame de vídeo, se o resultado que se pretende é horizontal ou vertical, etc.

São mesmo muitos detalhes e ainda está longe de estar completamente funcional, mas um pequeno teste já rolou e o vídeo acima, gerou a imagem abaixo com 480 por 360 pixels:

Por hora é menos interessante do que eu sonhei, mas ainda não desisti.

Arquivos PostScript

Os arquivos PostScript (.ps) podem ser melhor entendidos lendo esse site aqui.

Em 2019, eu recém chegado a Portugal, me inscrevi num workshop com o André Rangel aqui em Braga, no GNRation, para aprender como gerar arquivos desse tipo com uma linguagem de programação chamada Max.

Foram diversos experimentos interessantes, chegamos até a capturar imagens da webcam e filtrar para fazer ASCII arte ou algo do gênero.

No entanto, os arquivos PostScript ficaram na minha mente e eu volta e meia pensava neles. Quando me entendi melhor com o Python, comecei a considerar usar ele para gerar novos arquivos, usando números randômicos.

O .ps é um arquivo de texto que tem um cabeçalho mais ou menos assim:

%!PS-Adobe-3.0 EPSF-3.0
%%DocumentData: Clean7Bit
%%Origin: 0 0
%%BoundingBox: 0 0 2000 3000
%%LanguageLevel: 1
%%Pages: 1
%%Page: 1 1
<< /PageSize [2000 3000] >> setpagedevice
7 setlinewidth

Isso é mais um EPS do que um PS, mas assim o Photoshop entende e consegue abrir isso para salvarmos um jpg depois. Assim damos o tamanho da página, a largura da linha que vamos usar, etc.

Depois do cabeçalho seguem uma série de comandos. Cada um cria uma parte da imagem final. Um exemplo de comando é:

0.33 0.45 0.37 setrgbcolor
497.000 497.000 moveto
738.000 614.000 1854.000 1978.000 1503.000 2503.000 curveto
stroke

Começamos por estabelecer a cor que será usada, um ponto de partida, e desenhamos uma curva, por fim mandamos desenhar de fato com a palavra stroke.

A idéia de usar o Python é criar umas 100 linhas como essa em um único arquivo, com número que variam com incrementos ou randomicamente. Assim mudamos a cor da linha, a forma da curva, o ponto de partida, etc.

Com um pouco de sorte, os números encontram uma maneira esquisita de interagir e fazemos algo interessante. Na imagem acima há tanto um componente randômico com um componente incremental. Na imagem abaixo os números são randômicos.

Se quiser explorar esses caminhos, deixei os scripts e exemplos de arquivos PostScript em um repositório no GitHub.

Espaços virtuais e experimentais

Nesses últimos dias entrei numa parte dos meus cursos em que o Python é usado para criar caminhos para gerar HTML dinamicamente. Aproveitei para afiar meus códigos HTML e reaprender a escrever CSS. Numa viagem bem maluca eu lembrei quando o Jan me ensinou a fazer HTML num app chamado Hot Dog:

Isso foi há muito tempo. Logo depois apareceu Dreamweaver, que eu não tinha como rodar em casa. Eu ia ao estúdio do Clício usar no PC dele. E assim nasceu o coisasdavida ponto com que agora é bem defunto.

Na viagem atual eu comecei a descobrir diversas ferramentas interessantes para explorar o mundinho dos códigos, entre elas o Glitch, onde está esse espaço aqui:

O GitHub também oferece espaço para você hospedar uma página sobre a sua conta, lá eu criei esse cantinho aqui:

E assim vou experimentando os novos e velhos caminhos ao mesmo tempo, criando umas coisas esquisitas e usando algumas imagens mais esquecidas.