如何为Rackspace CloudFiles上存储的文件生成缩略图

时间:2013-10-28 09:07:24

标签: image-processing thumbnails rackspace cloudfiles

我使用Rackspace CloudFiles存储图像。现在我想在浏览器中将其显示为图库。有没有办法从Rackspace一侧从我的文件生成缩略图?

1 个答案:

答案 0 :(得分:2)

虽然使用Rackspace或OpenStack Swift库无法做到这一点,但您可以通过编程方式为图像创建缩略图并上传它们。

Python - pyrax + PIL(枕头)

例如,如果您使用的是Python,则可以使用Pillow(PIL)创建缩略图和pyrax to upload。你需要pip install这两个。在安装Pillow之前,请确保为libjpeg和libpng安装系统软件包(或按照Pillow的installation documentation中的说明进行操作。)

import os
from StringIO import StringIO

import pyrax
from PIL import Image

# Authenticate with Rackspace
pyrax.set_setting("identity_type", "rackspace")
pyrax.set_credential_file(os.path.expanduser("~/.rax_creds"))
cs = pyrax.cloudservers
cf = pyrax.cloudfiles

# Get the container we'll be uploading to
gallery = cf.get_container("gallery")

# Arbitrarily setting a thumbnail size
maxwidth=64
maxheight=64

infile = os.path.expanduser("~/mommapanda.jpg")
# We'll use StringIO to simulate a file
out = StringIO()

im = Image.open(infile)

im.thumbnail((maxwidth,maxheight), Image.ANTIALIAS)
im.save(out, "PNG")

# Back to the start of our "file"
out.seek(0)

gallery.store_object("mommapanda.thumb.png", out.read(),
                     content_type="image/png")

上面的代码变成了这个大图像

momma panda

进入此缩略图

momma panda thumbnail

并将其上传到CloudFiles上名为gallery的容器。