【问题标题】:How does the resizing api on the App Engine Imagine API work?App Engine Imagine API 上的调整大小 API 是如何工作的?
【发布时间】:2015-05-27 11:35:38
【问题描述】:

我正在尝试调整图像大小以生成缩略图、卡片等。但是,在调整图像大小时,它似乎保持纵横比,这不起作用,因为原始图像通常是矩形而缩略图,卡片等具有方形图像/与原始图像不同的纵横比。另外,如果纵横比相同,那我没有意识到这与仅在 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 参数来查看结果: 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 正方形或不同的纵横比。谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 是否有允许我更改纵横比的库(Python)?
    • 另外,你不能使用这个 API 裁剪图像,对吧?
    • 我还没有使用过任何这样的库,但我相信谷歌搜索会给你一些好的。只要它不依赖任何 C,它就应该在 GAE 上运行。您可以使用图像服务裁剪图像:cloud.google.com/appengine/docs/python/images/…
    猜你喜欢
    • 2012-07-22
    • 2016-04-23
    • 1970-01-01
    • 2011-06-13
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    相关资源
    最近更新 更多