简单的图像服务器
我有一堆图片需要让别人通过网页浏览,方式跟Apache-Gallery差不多。
我可以把所有图片放在一个文件夹里,这样用户访问:
就能看到小缩略图,点击一张图片就能在新页面全屏显示,并且可以选择浏览前一张或下一张图片。
我想找一个非Apache的解决方案,类似于很棒的Python简单HTTP服务器,可以在任何地方启动,配置简单,比如:
python -m SimpleHTTPServer 8000
其实,上面的Python解决方案基本上就是我想要的,只是它没有生成缩略图,而只是简单地列出了文件夹里的内容。
我很乐意使用任何常见语言写的应用程序,只要它是自包含的,并且可以在Linux上运行在自定义端口上(再强调一下,不是Apache模块)。
更新
我刚找到一个叫curator的Python脚本,运行起来很简单。它可以从你指定的文件夹里的图片生成所需的缩略图和静态HTML,然后你可以用SimpleHttpServer来展示这些结果。
3 个回答
4
虽然这个cgi-bin脚本没有使用SimpleHTTPServer类,但它展示了如何非常简单地显示图片。你可以根据自己的需要进行扩展。源代码在这里。
from os import listdir
from random import choice
ext2conttype = {"jpg": "image/jpeg",
"jpeg": "image/jpeg",
"png": "image/png",
"gif": "image/gif"}
def content_type(filename):
return ext2conttype[filename[filename.rfind(".")+1:].lower()]
def isimage(filename):
"""true if the filename's extension is in the content-type lookup"""
filename = filename.lower()
return filename[filename.rfind(".")+1:] in ext2conttype
def random_file(dir):
"""returns the filename of a randomly chosen image in dir"""
images = [f for f in listdir(dir) if isimage(f)]
return choice(images)
if __name__ == "__main__":
dir = "c:\\python\\random_img\\"
r = random_file(dir)
print "Content-type: %s\n" % (content_type(r))
print file(dir+r, "rb").read()
14
这件事发生在很久以前,不过我刚刚开始了一个叫做 imageMe 的项目,正好满足这个需求。你可以按照网站上的说明进行设置,但如果你只是想展示你当前位置及其下方的图片画廊,可以使用下面这个命令,它会在8000端口运行:
curl https://raw.githubusercontent.com/unwitting/imageme/master/imageme.py | python
希望这能帮助到其他有同样问题的人!
7
感谢大家的回答和评论。我最后采用的解决方案是这样的:
- 在存放我所有图片的文件夹里运行
curator
。这个操作会生成缩略图和一个索引页面,还会为所有大图创建分页。 - 在同一个文件夹里运行 "
*python -m SimpleHTTPServer 8000*
",这样就可以浏览curator生成的html页面了。
所以这其实是一个简单的两步操作,基本上满足了我最初的需求。