我设法将图片存储在Google App引擎blob中(我可以在仪表板的Blob Viewer中看到它,也可以在我的应用程序中使用服务处理程序)。 然而,现在我有这张照片..我想在向客户端提供服务时调整它...问题是我不能那样做...我不能用那个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”,因为它包含错误 我怎么能这样做?..我想要的是找到一种方法来改变图像中的斑点,然后处理图像......
答案 0 :(得分: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值 到那个网址,你已经完成了。
答案 1 :(得分:1)
第一个答案很接近。这种细微的改进使您可以明确地调整大小:
from google.appengine.api.images import get_serving_url
url = get_serving_url( "blobkey",size=1024)
在上面的代码中,size = 1024动态调整源blob图像的大小,使其最长边为1024像素,同时保持图像的原始比例。