Создание фотогалереи с использованием Python - PullRequest
2 голосов
/ 26 апреля 2011

Я начинающий программист и подумал, что было бы интересно изучить фотогалерею с помощью python.Я довольно далеко продвинулся в проекте, но недавно застрял.

У меня есть папка с фотографиями.Мне удалось создать индексную страницу с миниатюрами.Когда я нажимаю на миниатюру, появляется увеличенная версия.Однако, когда кто-то нажимает на более крупную версию, я бы хотел перейти к следующей фотографии.Прямо сейчас пользователь должен вернуться на главную страницу, чтобы перейти к следующей фотографии.Вот страница указателя с рабочими эскизами.

http://dl.dropbox.com/u/26085098/CCC%20Culinary%20Food%20and%20Wine%20Event%202011/index.html

Скрипт python, который я использовал для создания галереи, показан ниже.

Я был бы рад, если бы кто-то мог указать мне правильное направление.Кроме того, любые предложения о том, как сделать мой код более элегантным, будут с благодарностью.

import os

index=os.listdir('./Images')

x=len(index)

for fname in index:
    while x>0:
        x=x-1
        index[x] = '<a href="./' + index[x].replace("jpg", "html") + '">' + '<img src="./Thumbs/' + index[x] + '" />' + '</a>'

listString='\n'.join(index)

title=os.getcwd()
title=title.split("/")
title=title.pop()

file = open("index.html", 'w')

file.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"' + '\n')
file.write('    "http://www.w3.org/TR/html4/loose.dtd">' + '\n')
file.write('<html>' + '\n')
file.write('<title>' + title + '</title>' + '\n')
file.write('<head>' + '\n')
file.write('<style>' + '\n')
file.write('body {padding:10px;background-color:black;margin-left:15%;margin-right:15%;font-family:"Lucida Grande",Verdana,Arial,Sans-Serif;color: white;}' + '\n')
file.write('img {border-style:solid;border-width:5px;border-color:white;}' + '\n')
file.write('</style>' + '\n')
file.write('</head>' + '\n')
file.write('<body>' + '\n')
file.write('<h1>' + title + '</h1>' + '\n')
file.write(listString + '\n')
file.write('</body>' + '\n')
file.write('</html>')

file.close()


next=os.listdir('./Images')

x=len(next)

for name in next:
    while x>0:
        x=x-1
        next[x] = next[x].replace("jpg", "html")

image=os.listdir('./Images')
page=os.listdir('./Images')

x=len(page)

for fname in page:
    while x>0:
        x=x-1
        page[x] = page[x].replace("jpg", "html")
        file = open(page[x], 'w')
        file.write('<a href="./' + next[x] + '">' + '<img height="95%" src="./Images/' + image[x] + '" />' + '</a>')
        file.close()

Я пытался отобразить следующий URL, увеличивая значение "next", но это выдает ошибку.

next[x] = next[x+1].replace("jpg", "html")
IndexError: list index out of range

Ответы [ 3 ]

1 голос
/ 26 апреля 2011

чтобы быть более питоническим, вы можете заменить манипуляции со списком на понимание списка:

index=["".join(['<a href="./', item.replace("jpg", "html"), '">', '<img src="./Thumbs/', item, '" />', '</a>']) for item in os.listdir('./Images')]

вместо

x=len(index)

for fname in index:
    while x>0:
        x=x-1
        index[x] = '<a href="./' + index[x].replace("jpg", "html") + '">' + '<img src="./Thumbs/' + index[x] + '" />' + '</a>'
1 голос
/ 26 апреля 2011
x=len(next)

for name in next:
    while x>0:
        x=x-1
        next[x] = next[x].replace("jpg", "html")

Так как вы на самом деле не сбрасываете x между итерациями for, это, вероятно, не делает то, что вы хотели.

То же самое для следующего цикла, начинающегося с:

for fname in page:
    while x>0:
        x=x-1

Если ваши изображения пронумерованы 0:n-1, алгоритм создания ссылок довольно прост:

  • Для изображения M ссылка на K, где K:

    • равен M + 1, если M <= n-1
    • равен 0 (или сам, как вы решите), когда M == n-1
0 голосов
/ 27 апреля 2011

Получил это на работу. Вот скрипт на python, если кому-то интересно. Мне просто нужно было добавить еще один элемент в «следующий» список.

import os

index=os.listdir('./Images')

x=len(index)

for fname in index:
    while x>0:
        x=x-1
        index[x] = '<a href="./' + index[x].replace("jpg", "html") + '">' + '<img src="./Thumbs/' + index[x] + '" />' + '</a>'

listString='\n'.join(index)

title=os.getcwd()
title=title.split("/")
title=title.pop()

file = open("gallery.html", 'w')

file.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"' + '\n')
file.write('    "http://www.w3.org/TR/html4/loose.dtd">' + '\n')
file.write('<html>' + '\n')
file.write('<title>' + title + '</title>' + '\n')
file.write('<head>' + '\n')
file.write('<style>' + '\n')
file.write('body {font-size:small;padding:10px;background-color:black;margin-left:15%;margin-right:15%;font-family:"Lucida Grande",Verdana,Arial,Sans-Serif;color: white;}' + '\n')
file.write('img {border-style:solid;border-width:5px;border-color:white;}' + '\n')
file.write('h1 {text-align:center;}' + '\n')
file.write('a:link {color: grey; text-decoration: none;}' + '\n')
file.write('a:visited {color: grey; text-decoration: none;}' + '\n')
file.write('a:active {color: grey; text-decoration: none;}' + '\n')
file.write('a:hover {color: grey;text-decoration: underline;}' + '\n')
file.write('</style>' + '\n')
file.write('</head>' + '\n')
file.write('<body>' + '\n')
file.write('<h1>' + title + '</h1>' + '\n')
file.write(listString + '\n')
file.write('</body>' + '\n')
file.write('</html>')

file.close()

next=os.listdir('./Images')
image=os.listdir('./Images')
page=os.listdir('./Images')

next.append('gallery.html')

x=len(next)
y=len(page)
z=len(image)

for fname in page:
    while y>0:
        y=y-1
        x=x-1
        z=z-1
        page[y] = page[y].replace("jpg", "html")
        file = open(page[y], 'w')
        file.write('<html>' + '\n')
        file.write('<title>' + title + '</title>' + '\n')
        file.write('<head>' + '\n')
        file.write('<script type="text/javascript">function delayer(){window.location = "./' + next[x].replace("jpg", "html") +'"}</script>' + '\n')
        file.write('<style>' + '\n')
        file.write('body {font-size:small;text-align:center;background-color:black;font-family:"Lucida Grande",Verdana,Arial,Sans-Serif;color: white;}' + '\n')
        file.write('a:link {color: white; text-decoration: none;}' + '\n')
        file.write('a:visited {color: white; text-decoration: none;}' + '\n')
        file.write('a:active {color: white; text-decoration: none;}' + '\n')
        file.write('a:hover {color: white;text-decoration: underline;}' + '\n')
        file.write('</style>' + '\n')
        file.write('</head>' + '\n')
        file.write('<body onLoad="setTimeout(\'delayer()\', 3000)">' + '\n')
        file.write('<p><a href="gallery.html">' + title + '</a></p>' + '\n')
        file.write('<a href="./' + next[x].replace("jpg", "html") + '">' + '<img height="90%" src="./Images/' + image[z] + '" />' + '</a>')
        file.write('</body>' + '\n')
        file.write('</html>')
        file.close()
...