如何在App Engine Imagine API上调整大小api的工作原理?

时间:2015-05-27 11:35:39

标签: css google-app-engine image-resizing

我正在尝试调整图像大小以生成缩略图,卡等。但是,在调整图像大小时,它似乎保持宽高比,这不起作用,因为原始图像通常是矩形而缩略图,卡等具有正方形图像/与原始图像不同的宽高比。另外,如果纵横比相同,那么我没有意识到这与仅在CSS中设置img的宽度有何不同?

我在App Engine后端有以下代码来处理这个问题:

class ImageHandler(webapp2.RequestHandler):
    def get(self):
        img_url = self.request.get("url")
        try:
            result = urllib2.urlopen(img_url)
            image = result.read()
            width = int(self.request.get("width")) or 320
            height = int(self.request.get("height")) or 320
            image = images.resize(image, width, height)
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(image)
            #pdb.set_trace()
            #print "Result: " + str(result.read())
        except urllib2.URLError, e:
            print e

通过更改url params可以看到结果: http://qwiznation.appspot.com/img?width=400&height=200&url=http://www.washingtonpost.com/blogs/wonkblog/files/2012/12/Obama_Fiscal_Cliff-0e5c7-588-copy.jpg

我试图将其设置为320x320平方或不同的宽高比。谢谢!

1 个答案:

答案 0 :(得分:1)

图像服务不提供在不保持纵横比的情况下调整大小的方法。为此,您需要使用另一个库并重新保存文件。

使用CSS调整服务器端而不是客户端上的映像大小的好处是可以减少服务器文件的大小,从而提高加载速度。 GAE Images服务还为您提供了一张免费的CDN,用于调整大小的图像,这意味着它可以缓存,复制到不同的地理位置,服务速度更快,除了存储原始图像的成本之外,它不会花费任何费用。< / p>