0

我设法在 Google App 引擎 blob 中存储了一张图片(我可以在仪表板的 Blob 查看器中看到它,也可以在我的应用程序中使用服务处理程序看到它).. 但是,现在我有这张图片..我想要在为客户提供服务时调整它的大小...问题是我不能这样做...我不能从那个 blob 中制作图像...这是我的代码:

from google.appengine.api import images

from google.appengine.ext import blobstore      
from google.appengine.ext.webapp import blobstore_handlers  
....
class Image(webapp2.RequestHandler):
def get(self,id):
    product = Product.by_id(int(id))
    logging.info('pic key is' + str(product.small_pic.key()))
    img = images.Image(blob_key=str(product.small_pic.key()))
    img.im_feeling_lucky() # do a transform, otherwise GAE complains.

    img.execute_transforms(output_encoding=images.JPEG,quality=1)
    if img:
        self.response.headers['Content-Type'] = 'image/png'
        self.response.out.write(img)
    else:
        self.error(404)

上面的代码取自这个线程:GAE: How to get the blob-image height

当我从上面的 ex /img/373 运行代码时,我得到了错误:

图像“http:../img/373”无法显示,因为它包含错误 我该怎么做?..我想要找到在图像中转换该 blob 然后处理图像的方法。 ..

4

2 回答 2

1

第一个答案很接近。这种细微的改进使您可以明确地调整大小:

from google.appengine.api.images import get_serving_url
url = get_serving_url( "blobkey",size=1024)

在上面的代码中,size=1024 将源 blob 图像的大小动态调整为最长边为 1024 像素,同时保持图像的原始比例。

于 2013-08-09T03:32:53.487 回答
1

您不需要通过应用程序传送该图像。gae 有一个调整图像大小的服务:

from google.appengine.api.images import get_serving_url
url = get_serving_url( "blobkey")

然后将https://developers.google.com/appengine/docs/python/images/functions#imgsize值之一附加到该 url,就完成了。

于 2013-04-16T16:10:21.577 回答