2013-04-14 65 views
0

我設法在Google App引擎blob中存儲圖片(我可以從儀表板中的Blob查看器以及使用服務處理程序的應用程序中看到它).. 但是,現在我有這張照片那裏..我想調整它,而服務於它的客戶端...問題是,我不能這樣做...我不能使圖像出該blob ...這是我的代碼:處理來自blob GAE的圖像

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然後處理圖像...

+0

在'execute_transforms'中指定編碼爲JPEG,並在響應頭文件中將其指定爲PNG。這應該是? – Dave

+0

在我的許多嘗試中,我指出了'img.execute_transforms(output_encoding = images.JPEG,quality = 1)'這一行,仍然沒有任何變化:( – Teshte

回答

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,就大功告成了。

+0

我這樣做了......它更高效,因爲我可以保持一個大圖像,然後讓它的尺寸儘可能多我想:) – Teshte

1

第一個答案很接近。這種輕微的細化,可以調整明確大小:

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

在上面的代碼,大小= 1024動態調整大小的源團塊圖像要在最長邊1024個像素,同時保持圖像的原始比例。

相關問題