• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

djthyrax

[Python] Gerador de Galeria de imagens HTML

1 mensagem neste tópico

É um script que fiz em Python para gerar uma galeria de fotos em html a partir de um directório com fotos, pois precisava de o fazer porque tinha um directório com várias fotos e “colocar” uma foto de cada vez em código html é trabalhoso, por isso aproveitei uma biblioteca de Python e pus mãos à obra.

A minha primeira dificuldade foi certamente criar uma thumbnail da imagem em questão, por isso dei uma visita ao Google (http://www.google.pt) e rapidamente encontrei o que queria: Python Imaging Library (http://www.pythonware.com/products/pil/). É óbvio que não sabia como trabalhar com este, então disse a mim mesmo: RTFM, fi-lo e em questão de minutos já sabia minimamente o que queria.

Primeiro de tudo tive que indicar que imagem abrir, para isto atribuí a uma variável o resultado de

Image.open(imagem)

Em que imagem será uma variável com o caminho da foto/ficheiro.

Também declarei outra variável: THUMBSIZE, em que atribuí a esta a largura e altura da thumbnail (230×153), mais propriamente o valor 230,153. Após isto utilizei a função

Thumbnail

da biblioteca PIL (Python Imaging Library) para a criar, que tem a seguinte sintaxe:

Img (esta foi uma variável criada por mim em que terá como valor o resultado de image.open(imagem) –

img.thumbnail(THUMBSIZE)

OK. Já tenho a thumbnail da imagem, agora tenho que a salvar… mas há um problema: Imaginemos que o utilizador do script já o correu anteriormente, mas agora acrescentou mais imagens, só que as thumbnails das imagens já existentes encontram-se no directório… como fazer para não criar uma thumbnail de uma thumbnail?

É simples, basta utilizar um if para verificar se as primeiras 5 letras da variável imagem são constituídas pela palavra thumb

If imagem[0:5] != “thumb”:

Após esta verificação, caso o resultado seja Verdadeiro e não Falso, o script vai executar o que vem a seguir a esta condição:

Img.save(’thumb.’ + str(imagem), “JPEG”)

Ou seja, o ficheiro ficará: thumb.Foto1.JPG note-se aqui o uso da função str() para converter o valor de imagem para uma string (cadeia de caracteres alfanuméricos). Basicamente a função save do PIL é para salvar num ficheiro as alterações feitas à imagem.

E pronto, temos o problema de criar as thumbnails resolvido.

Aqui abaixo segue-se o código completo do script.

galeria.txt

Tive que o colocar num ficheiro porque não sei mandar o wordpress ignorar tags html.

Nota: As tags html do código não estão terminadas porque fiz isto um pouco à pressa.

#!/usr/bin/env python

# Por Alexandre Garcia © 2006

# Wed, 06 Dec 2006

import os, time, string, Image, glob

THUMBSIZE = 230, 153

PATH = "/home/amg/Fotos/Minhas/" # Alterar para o directorio das fotos

HTML = PATH + "index.html"

TITLE = "Fotos" # Alterar para o titulo do site

ficheiro = open(HTML,"w")


def converter():
os.chdir(PATH)
for imagem in glob.glob("*.JPG"):
	img = Image.open(imagem)
	img.thumbnail(THUMBSIZE)
	if imagem[0:5] != "thumb":
		img.save('thumb.' + str(imagem), "JPEG")

def gerar():
os.chdir(PATH)
imgthumb = glob.glob("thumb.*")
ficheiro.write("<html><head><title>" + TITLE + "</title></head><body><font size=\"4\"><b><center>" + TITLE + "</b></font><br><br>")

for thumb in imgthumb:
	thumb = '<a href=\"' + str(thumb).strip('thumb.') + '\">' + '<img src=\"' + thumb + '\">' + '</img>' + '</a>' + ' '
	ficheiro.write(thumb)
ficheiro.write("<br><br><font size=\"2\">Actualizado em " + time.strftime("%d-%m-%Y %H:%M:%S") + "<br>Galeria - Script feito por <a href=\"mailto:alexmgarcia@tux-linux.net\" style=\"text-decoration:none\"><b>Alexandre Garcia</b></a> © 2006</font></center></body></html>")
ficheiro.close()

converter()

gerar()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora