quarta-feira, 21 de março de 2012

Python e GIFs animados

Trabalhando em um projeto precisei criar arquivos de imagens. Tudo ocorria bem até eu me deparar com um problema: Como criar uma imagem animada transparente?

O PIL não cria GIF's animados, apenas os lê.

Achei então um image2gif escrito por Almar Klein mas o script dele não cria GIF's com transparência.

Procurei formas alternativas usando o PIL como base e não achei nada, mas achei um código escrito em PHP por László Zsidi muito bom que faz exatamente o que estava procurando. Transcrevi o código pra Python e o resultado encontrasse abaixo para uso.

A classe trabalha com arquivos GIF da versão 87a e 89a. A dimensão final da imagem é baseada no primeiro frame.

GIF(frames, loops=0, dis=2, transparency=None)

frames
uma tupla com os frames onde o primeiro indice é o arquivo e o segundo indíce é o tempo do frame, o arquivo pode ser um open(..., 'rb'),  caminho do arquivo relativo ou absoluto, ou uma string contendo o a imagem.
 
loops
Quantidade de repetições da animação, onde 0 é repetição contínua.
 
dis
Disposição de cada frame. Onde 0, 1 uma imagem é jogada em cima da outra respeitando a transparência. E 2, 3 o efeito cascata não é aplicado.
 
transparency
Cor que será considera a cor alpha da imagem, dando o efeito de transparência.

GIF.create_animation()

Retorna um buffer contendo a imagem GIF animada.

Exemplo

from GIF import GIF
frames = [
    (open('410.gif', 'rb').read(), 40),
    (open('411.gif', 'rb'), 40),
    ('412.gif', 40),
    (open('413.gif', 'rb'), 40),
    (open('414.gif', 'rb'), 40),
    (open('415.gif', 'rb'), 40),
    (open('416.gif', 'rb'), 40),
    (open('417.gif', 'rb'), 40),
]
gif = GIF(frames, 2, 3, (255, 0, 255))
image = gif.create_animation() # retorna o buffer da imagem
open('animation.gif', 'w+b').write(image)    

Download

GIF.7z (Python, 5kb)
  • GIF.py -- módulo
  • 410.gif ~ 417.gif -- imagens de exemplo
  • animationjoin.gif -- imagem de resultado final
GIFEncoder.zip (PHP, 41kb) escrito por László Zsidi

Att, Gilson Fabiano

segunda-feira, 5 de março de 2012

Sublime Text 2 Beta, Build 2181 + Patch

O editor de texto que estou usando desde o ano passado chamasse Sublime Text 2. Antes eu usava uma forma alternativa do textmate para windows o e-texteditor -- além de ser um software pago, sua ultima atualização foi em 2010 --
Um dos recursos do textmate que me chamou atenção é que quando selecionado o texto tabulações, espaços, quebras de linhas e outros caracteres não imprimivéis são expostos (assim sei como meu texto está realmente).

Não é só por esse recurso que mudei pro Sublime Text 2, ele vem me conquistando cada vez mais que o utilizo. Eu particulamente recomendo esse editor até por ele ser multi plataforma.

Sublime Text 2 Beta agora está em seu Build 2181. Visite o site oficial para maiores informações.

Você pode baixar o Build 2181 por esse link e por esse o patch.

Quem fez o patch e o que ele faz?

O patch foi uma alternativa que eu criei para desativar as notificações que ocorre quando salva o arquivo em determinadas quantidades, além da notificação o patch também remove o UNREGISTERED da barra de titulo. Entretanto o patch funciona apenas em versões compiladas para windows 32 bits.

Use o patch por conta própria e risco.

Não me senti violando nenhuma licença ou similar, até porque não achei nenhuma licença vinculada ao software.

Att, Gilson Fabiano.

BBot 5.4 Retail

Disponibilizo ao publico a versão do BBot 5.4 crackeada.

Para saber mais verifique o site official do bot.

Como usar

Antes de abrir o BMega.exe execute o BMegas.exe (que simula o servidor de autentificação do BBot).
Feito isso, execute o BMega.exe normalmente e clique em Login.

Download 1.7 MB (SHA1 Checksum: a846a9314a6bc6d385893c36646a7e597b13bf39)