Personalize ainda mais as suas marcas d’água no DarkTable com arquivos SVG

O editor de imagens RAW, darktable, permite personalizar as marcas d’água, com a inserção de arquivos de imagem vetorial SVG.

Crie uma logo no Inkscape, por exemplo. Salve o SVG e insira-o nas suas fotos, pelo darktable.

Neste momento, ainda estou engatinhando no Inkscape e, portanto, as minhas dicas sobre o aplicativo serão bem básicas. Se você conhece bem o programa, fique à vontade para compartilhar as suas dicas nos comentários.

Este post faz uso das variáveis das marcas d’água, que eu expliquei aqui — Se tiver alguma dúvida, dá uma olhadinha na tabela que postei ali.

Aonde ficam gravadas as marcas d’água personalizadas do DarkTable

Na minha instalação Debian 10.5 “Buster” e darktable 3.0.2, os arquivos .svg personalizados devem ficar em ~/.config/darktable/watermarks/

Gerenciador de arquivos Nautilus aberto na pasta ~/.config/darktable/watermarks, exibe os meus arquivos .svg correspondentes às minhas marcas d’água personalizadas.

Se você tem a intenção de alterar uma marca d’água preexistente na sua instalação do darktable, copie os arquivos padrão para a sua pasta pessoal:

cp /usr/share/darktable/watermarks/* ~/.config/darktable/watermarks

Se for criar algo novo, não se esqueça de gravar no lugar certo: ~/.config/darktable/watermarks

Hackeando os arquivos de marca d’água SVG

Uma alternativa, pode ser alterar um dos arquivos .svg internamente. Basicamente, são arquivos texto com as informações para montar as imagens.

Se você for cuidadoso, pode encontrar o texto que deseja alterar dentro do arquivo. Tenha o cuidado de fazer sempre uma cópia antes de mexer — as perdas podem ser irreversíveis.

Você foi avisado.

Como criar uma nova marca d’água para o DarkTable com o Inkscape

Esta pode ser a melhor solução.

Sei usar muito pouco o Inkscape. Contudo, a partir do meu exemplo “basiquinho”, você terá condições para construir algo muito mais sofisticado.

Dentro da minha página, no Inkscape, criei um retângulo escuro, com 40% de transparência.

No meu exemplo, criei um retângulo semitransparente com ícones representativos das informação EXIF que eu quero exibir.

Em seguida, abri uma caixa de texto no meio do retângulo e inseri as variáveis do darktable que representam as informações EXIF da câmera:

As informações EXIF são inseridas a partir destas variáveis.
  • $(IMAGE.EXIF) — configurações da exposição da fotografia
  • $(MAKER) — fabricante da câmera
  • $(MODEL) — modelo da câmera
  • $(EXIF.LENS) — fabricante e modelo da lente/objetiva

O resultado final foi parecido com este (imagem abaixo):

O modelo de marca d’água, criado no Inkscape vai buscar informações EXIF dentro das imagens e coloca cada uma no lugar certo.

Basicamente, é isso aí.

Tive que criar (e jogar fora) vários modelos até acertar.

Por fim, não esqueça de ler o texto sobre as variáveis $(EXIF), aonde explico melhor este assunto.

Marca d’água com as informações EXIF da sua câmera no DarkTable.

Se tem um item que merece e precisa ser personalizado, convenhamos… é a marca d’água! Sempre.

Na versão em inglês do DarkTable, o recurso é chamado watermark e permite várias personalizações.

Usualmente, os fotógrafos preferem usar uma imagem pronta, em PNG, para inserir sua logo nas imagens editadas. Afinal, se o objetivo da marca d’água é mostrar “nossa marca”, ela precisa também ser padronizada.

O módulo watermark ou marca d’água tem muitas opções de personalização e automação, no editor darktable.

A resposta curta: use o promo.

Pessoalmente, não gosto de inserir logotipos nas minhas imagens.

Mas acho interessante exibir informações sobre a foto em si, como os ajustes de exposição (sempre tem alguém que pergunta sobre isso, né?), sobre o equipamento usado, a localização etc.

Há algumas opções padrão de marcas d’água prontas, no DarkTable (ou apenas darktable), que podem ser usadas sempre.

As opções “promo” e “darktable” padrão, fazem exatamente o que estamos propondo, neste post: mostrar as informações EXIF sobre as configurações de exposição da câmera para a imagem atual.

Se isso for o suficiente para você, não precisa ler mais nada… terminamos por aqui.

O darktable vem com 04 opções padrão de marca d’água: darktable, hasselblad, promo e simple-text.

A resposta completa: eu quero do meu jeito!

Se quiser personalizar a fonte, a cor da fonte, o tamanho da sua watermark, a ordem em que as informações EXIF irão aparecer etc. me acompanhe!

Vou mostrar alguns exemplos de como configurar o texto da sua marca d’água. O que não for coberto por este post, será relativamente fácil descobrir através da tentativa-e-erro.

O texto do módulo permite a inserção de variáveis, contendo as informações que a sua câmera gravou no EXIF de cada imagem. Se estiverem lá, o darktable vai encontrar.

Experimente digitar “Minhas config de exposição: $(IMAGE.EXIF)” (sem as aspas, claro).

Para automatizar, ainda mais, o darktable pode encontrar também as informações sobre o ano em que a imagem foi registrada e o nome do autor:

Copyright $(EXIF_YEAR) $(CREATOR) - $(IMAGE.EXIF)

Note que as informações de copyright: $(CREATOR), $(RIGHTS) e $(PUBLISHER), são gravadas dentro da sua câmera. Ou seja, se você ainda não configurou estas informações dentro da câmera, as variáveis provavelmente estarão vazias — ou com as informações do dono anterior da câmera, caso a tenha comprado usada.

Com o uso das variáveis $(CREATOR) e $(IMAGE.EXIF), você pode fazer o darktable exibir na marca d’água um texto contendo as o aviso de direitos autoriais, seguido das informações EXIF da sua câmera.

Tabela de variáveis suportadas pelo DarkTable

De acordo com o manual do aplicativo, as variáveis suportadas — para usar no módulo Marca d’água — são as seguintes:

  • $(DARKTABLE.NAME) — armazena o nome do programa: “darktable”
  • $(DARKTABLE.VERSION) — armazena a versão atual do darktable: p. Ex. 3.0.2
  • $(IMAGE.ID) — armazena a identificação interna do arquivo de imagem
  • $(IMAGE.EXIF) — retorna uma string contendo o tempo de exposição, o valor da abertura do diafragma, a distância focal da lente e o ISO
  • $(EXIF.DATE) — retorna a data/hora completa dentro do formato Unix
  • $(EXIF.DATE.SECOND) — retorna os segundos a partir da data contida no EXIF
  • $(EXIF.DATE.MINUTE) — retorna os minutos a partir da data contida no EXIF
  • $(EXIF.DATE.HOUR) — retorna as horas a partir da data contida no EXIF
  • $(EXIF.DATE.HOUR_AMPM) — retorna a hora AM/PM a partir da data contida no EXIF
  • $(EXIF.DATE.DAY) — retorna o dia a partir da data contida no EXIF
  • $(EXIF.DATE.MONTH) — retorna o número do mês a partir da data contida no EXIF
  • $(EXIF.DATE.SHORT_MONTH) — retorna o nome abreviado do mês a partir da data contida no EXIF: Jan, Fev … , Dez
  • $(EXIF.DATE.LONG_MONTH) — Janeiro, Fevereiro, … Dezembro
  • $(EXIF.DATE.SHORT_YEAR) — retorna os últimos 2 dígitos do ano
  • $(EXIF.DATE.LONG_YEAR) — retorna o ano completo
  • $(DATE) — retorna a data atual
  • $(DATE.SECOND) — retorna os segundos
  • $(DATE.MINUTE) — retorna os minutos
  • $(DATE.HOUR) — retorna as horas
  • $(DATE.HOUR_AMPM) — retorna a hora AM/PM
  • $(DATE.DAY) — retorna o dia
  • $(DATE.MONTH) — retorna o número mês
  • $(DATE.SHORT_MONTH) — retorna o nome do mês abreviado
  • $(DATE.LONG_MONTH) — retorna o nome do mês completo
  • $(DATE.SHORT_YEAR) — retorna o ano abreviado
  • $(DATE.LONG_YEAR) — retorna o ano completo
  • $(EXIF.MAKER) — retorna o fabricante da câmera
  • $(EXIF.MODEL) — retornta o modelo da câmera
  • $(EXIF.LENS) — retorna o nome da lente
  • $(IMAGE.FILENAME) — retorna o nome original completo do arquivo
  • $(IMAGE.BASENAME) — retorna o nome base (sem a extensão)
  • $(CREATOR) — retorna o nome do criador da imagem (isso é configurável na sua câmera)
  • $(RIGHTS) — retorna a frase de direitos autoriais que está configurada na sua câmera
  • $(Xmp.dc.creator) — metadados constantes do lighttable
  • $(Xmp.dc.publisher) — metadados constantes do lighttable
  • $(Xmp.dc.title) — metadados constantes do lighttable
  • $(Xmp.dc.description) — metadata as set in lighttable
  • $(Xmp.dc.rights) — metadados constantes do lighttable
  • $(GPS.LATITUDE) — retorna informações da latitude obtidas pelo GPS. Ex: N 51° 30.048'
  • $(GPS.LONGITUDE) — retorna informações da longitude obtidas pelo GPS. Ex:W 000° 08.553'
  • $(GPS.ELEVATION) — retorna informações da elevação obtidas pelo GPS. Ex:42.23 m above sea level (metros acima do nível do mar)
  • $(GPS.LOCATION) — retorna informações completas obtidas pelo GPS. Ex:N 51° 30.048', W 000° 08.553', 42.23 m above sea level

Estas variáveis são algumas das mais comuns dentro do darktable versão 3.0.2. Outras versões, podem ter variáveis adicionais, subtraídas ou diferentes.

Algumas variáveis da lista são redundantes — por exemplo: $(EXIF.DATE) e $(DATE). Nestes casos, você pode usar a que quiser.

Também é possível usar as variáveis referentes aos nomes dos arquivos — sirva-se à vontade. E não esquece de mostrar, nos comentários, como ficou a sua marca d’água!

Como incrementar os nomes dos seus arquivos no DarkTable.

O DarkTable, ou apenas darktable, permite personalizar os nomes dos seus arquivos, incluindo informações adicionais — o que pode ajudar a entender melhor cada imagem a partir do seu nome, sem precisar abrir.

Nomes descritivos, são nomes que explicam, por si só, o conteúdo de cada arquivo, em um diretório.

Usar nomes descritivos, que explicam o que está contido no arquivo, permite, por exemplo, selecionar um grande número de arquivos para transferência ou remoção, de uma só vez, sem precisar olhar uma a uma as imagens.

O darktable permite ir mais longe.

Eu costumo classificar todas as minhas imagens, quando volto de uma sessão de fotos: rejeitadas, 1 estrela, 2 estrelas etc.

Quando o nome do arquivo da imagem contém a classificação que eu dei a ela, fica mais fácil eu decidir o que fazer com cada arquivo — ou grupo de arquivos — no gerenciador de arquivos.

Quando termino de classificá-las, uma a uma, volto para tela inicial e gravo todas as imagens “rejeitadas” com o nome “apague-me” ou “apagueme”.

Mais tarde, quando eu estiver olhando o diretório (ou a pasta) onde as minhas imagens se encontram, posso remover com segurança todas as que foram rejeitadas.

Quando eu acrescento “apagueme” aos nomes dos arquivos rejeitados, depois fica superfácil selecionar e remover o que não prestou, incluindo a versão original RAW (CR2).

Usando variáveis para obter informações do sistema sobre os arquivos de imagens

Usando variáveis de sistema (internas do aplicativo), dá pra gravar suas imagens com nomes bem mais sofisticados.

É possível gravar arquivos com nomes contendo informações sobre a lente usada, a distância focal, a abertura etc.

Veja um exemplo:

$(FILE_FOLDER)/darktable_exported/$(FILE_NAME)-$(EXIF_ISO)

A informação, acima, diz que o darktable deve gravar o arquivo

  • dentro da pasta atual $(FILE_FOLDER)
  • … e dentro de uma subpasta chamada “darktable_exported” (se não existir, será criada)
  • com o nome original dele $(FILE_NAME)
  • acrescido da informação sobre o ISO da imagem $(EXIF_ISO)
O nome do arquivo IMG_0977-400-[2]-0.jpg contém informações sobre o ISO da imagem (400), sua classificação (2) e a versão (0).

De acordo com estes parâmetros, meus arquivos finais, irão ficar parecidos com isto aqui:

IMG_0958-200.jpg

… e serão gravados dentro daquelas pastas especificadas acima.

Faça as suas experiências!

Nomes ainda mais sofisticados

Você pode fazer muito mais do que isso!

Código para gerar um nome de arquivo contendo a classificação (stars), entre outras coisas…

Que tal incluir mais informações da tabela EXIF de metadados nos nomes dos arquivos?

Use o seguinte código (tudo na mesma linha) na caixa de texto:

$(FILE_FOLDER)/darktable_exported/$(FILE_NAME)-$(CREATOR)-$(STARS)-$(VERSION)

Isso irá acrescentar

  • o nome do criador da imagem — informação que você pode acrescentar ou alterar em um dos menus da sua câmera (consulte o manual).
  • a quantidade de estrelas com que você classificou o arquivo.
  • a versão da imagem

O resultado do código acima, será algo semelhante a:

IMG_0989-ELias Praciano-3-0.jpg

Quem trabalha com vários modelos de câmeras e lentes, pode querer inserir estas informações nos nomes dos arquivos. Isto tornaria super fácil encontrar todas as fotos que já foram tiradas com determinada lente — basta fazer a busca pelo nome específico do arquivo!

Tabela de variáveis suportadas pelo DarkTable

De acordo com o manual do aplicativo, as variáveis suportadas — para usar na nomenclatura dos seus arquivos são as seguintes.

$(ROLL_NAME)rolo da imagem de entrada.
$(FILE_FOLDER)a pasta em que se encontra a imagem atual.
$(FILE_NAME)nome do arquivo da imagem.
$(FILE_EXTENSION)a extensão do arquivo da imagem (jpg, cr3, nef etc).
$(ID)número de identificação da imagem.
$(VERSION)quando a mesma imagem é gravada mais de uma vez, o DarkTable dá a cada duplicata um número de versão diferente automaticamente.
$(SEQUENCE)um número sequencial, dentro de um trabalho de exportação.
$(YEAR)o ano referente à data da exportação/gravação da imagem.
$(MONTH)o mês.
$(DAY)o dia.
$(HOUR)a hora.
$(MINUTE)o minuto.
$(SECOND)o segundo.
$(STARS)exibe a classificação que você deu à imagem, em número de estrelas.
$(LABELS)etiquetas de cores relacionada à imagem.
$(MAKER)o fabricante da câmera
$(MODEL)o modelo da máquina
$(TITLE)o título de acordo com os metadados (obtidos da câmera).
$(CREATOR)criador da imagem, de acordo com os metadados.
$(PUBLISHER)publicador, de acordo com os metadados.
$(RIGHTS)informações sobre os direitos autoriais, de acordo com os metadados que você configurou na câmera.
$(USERNAME)o nome do usuário do sistema (operacional).
$(PICTURES_FOLDER)o nome da pasta das imagens.
$(HOME)o nome da pasta do usuário atual.
$(DESKTOP)a pasta referente à área de trabalho.
$(EXIF_YEAR)o ano dentro da data EXIF, fornecido pela câmera.
$(EXIF_MONTH)o mês.
$(EXIF_DAY)o dia.
$(EXIF_HOUR)a hora.
$(EXIF_MINUTE)o minuto.
$(EXIF_SECOND)o segundo.
Tabela de variáveis para usar na nomenclatura de arquivos.

Comente com a gente como você prefere configurar a nomenclatura dos seus arquivos no DarkTable!

Como incrementar rapidamente a sua biblioteca de codecs de vídeo para FFmpeg

O FFmpeg é um framework multimídia líder, dentro do universo GNU/Linux, para lídar com imagens, vídeo e áudio.

Sua função é permitir a codificação, decodificação, transcodificação, realizar tarefas complexas de mux, demux, fluxo (streaming), aplicar filtros etc.

Em outras palavras, o FFmpeg é um software concebido para manipular arquivos multimídia, de qualquer tipo, que tenham sido criados.

De acordo com o manual do utilitário, ele oferece suporte aos formatos — desde os mais obscuros e antigos — até os mais novos e avançados.

Muitas pessoas usam o FFmpeg sem saber, através de softwares GUI — que invocam as funcionalidades do FFmpeg, por baixo, sem que o usuário perceba — tal como o Kdenlive e outros programas conhecidos para edição de vídeo e áudio.

Se você preferir, contudo, pode invocar o FFmpeg da linha de comando de um terminal e realizar as tarefas por si mesmo, sem a necessidade de instalar qualquer outro programa — até por que, usualmente, o FFmpeg já vem instalado no Linux.

Neste site, tenho vários artigos que ensinam truques para usar o FFmpeg na edição de arquivos de áudio e vídeo, direto na linha de comando.

Editar vídeo e áudio na linha de comando pode ser um pouco “sem graça” para muitas pessoas, mas há algumas vantagens e bônus para esta abordagem.

A edição na linha de comando pode ser mais ágil e sempre usa menos recursos do seu sistema na execução das tarefas.

Um exemplo de atividade que só é possível realizar na linha de comando, seria a aplicação de vários filtros simultaneamente a um vídeo, para gerar vários arquivos resultantes da ação.

Desta forma, posso obter vários vídeos, prontos ao mesmo tempo, para analisar (e escolher qual fica e quais eu jogo fora). Na GUI, eu seria obrigado a aplicar um filtro de cada vez.

O pacote Extra58 do FFmpeg

A libavcodec-extra58 é um metapacote de bibliotecas feitas para o FFmpeg. Existe a versão “não extraordinária” — chamada libavcodec58, que conflita com esta aqui. Portanto, instale apenas uma.

O metapacote, traz uma série adicional de bibliotecas de codecs de codificação/decodificação de áudio e vídeo. Contém os seguintes codecs:

  • OpenCORE Adaptive Multi-Rate (AMR) Narrow-Band (codificador/decodificador)
  • OpenCORE Adaptive Multi-Rate (AMR) Wide-Band (decodificador)
  • Android VisualOn Adaptive Multi-Rate (AMR) Wide-Band (codificador)

O segundo metapacote (metapackage) é o libavcodec-extra que, na verdade, depende do primeiro. Ou seja, basta instalar este. No Debian, o comando fica assim:

sudo apt install libavcodec-extra
Instalação do libavcodec-extra, biblioteca de codecs para FFmpeg.

A biblioteca nova já estará configurada e pronta para usar, logo após a instalação.

Substitua as mensagens de erro de login do seu blog WordPress por mensagens aleatórias, à sua escolha.

O WordPress informa, na tela de autenticação, se você errou o nome de usuário ou a senha.

O problema é que esta informação pode ser valiosa a um agressor, uma vez que, se souber que uma das entradas está correta, metade do trabalho de invasão já estará completo.

Em princípio, eu recomendaria suprimir qualquer mensagem. Deixa tudo em branco e não informe absolutamente nada. Se você está realmente preocupado com a segurança do seu site, é melhor deixar o agressor no vácuo total.

O código que vou te apresentar, abaixo, foi criado por Sérgio Costa e pode ser facilmente alterado para exibir nenhuma mensagem (conforme recomendei acima) ou exibir frases aleatórias, de uma lista, que você mesmo vai fornecer.

Deve ser inserido dentro do arquivo functions.php, da seguinte forma:

<?php
// Insert into your functions.php and have fun creating login error msgs
function guwp_error_msgs() { 
    // insert how many msgs you want as an array item. it will be shown randomly 
    $custom_error_msgs = array(
        '<strong>YOU</strong> SHALL NOT PASS!',
        '<strong>HEY!</strong> GET OUT OF HERE!',
    );
    // get random array item to show
    return $custom_error_msgs[array_rand($custom_error_msgs)];;
}
add_filter( 'login_errors', 'guwp_error_msgs' );
?>

Outras sugestões de aplicação

Uma sugestão (minha) é evitar usar frases “provocativas” — por que elas podem acabar servindo de incentivo a uma pessoa maliciosa.

Alterar o functions.php tem, pelo menos, um ponto negativo: em caso de atualização do tema, o arquivo será suprimido para dar espaço para a nova versão. Para evitar isso, use temas filhos do WordPress.

Outra abordagem, é incluir o código sugerido pela Lilly Freitas em um plugin — que não é apagado nas atualizações.

Neste caso, crie o arquivo de plugin dentro da pasta /wp-content/plugins/ e o ative no painel de controle do WordPress.

O código original do Sérgio Costa: https://gist.github.com/zergiocosta/72f87176b236ed0c6e13

O código do plugin da Lilly Freitas: https://gist.github.com/lillyfreitas/fb5744f776af11f9958f2c8744139dfb