2013-05-10 130 views
1

我目前正在Appengine製作一個圖片分享網站,主要是爲了我想要它,但有時候我想要一個圖像的小版本(縮略圖) - 目前我正在用HTML縮小它,但是如果完全沒有必要,瀏覽器仍然會加載完整的(最多32MB的圖片)。如何顯示質量較低,較小的圖像以節省帶寬?Appengine blobstore,存儲完整大小的圖像和小圖像?

服務圖像的代碼。這是'mysite.com/view'

class ViewPhotoHandler(blobstore_handlers.BlobstoreDownloadHandler): 
    def get(self, photo_key): 
     if not blobstore.get(photo_key): 
      self.error(404) 
     else: 
      self.send_blob(photo_key) 

請求圖像的代碼。

p.blob_key是一個字符串

link = '/view/%s' % p.blob_key 
self.response.write('<img src="' + link + '" alt="Image" height="50" width="50">') 

所以,一切工作應該如何,但請求的小版本的圖像時,它浪費了太多的帶寬。

關於如何解決這個問題的任何想法? 感謝

回答

2

從圖像包中使用該功能get_serving_url

from google.appengine.api.images import get_serving_url 

url = get_serving_url(blob_key, size=None, crop=False, secure_url=None) 

您可以調整圖片的大小,有無剪裁它。

圖像API文檔:https://developers.google.com/appengine/docs/python/images/functions

注意:您現在的處理程序並不需要成爲BlobstoreDownloadHandler一個子類。

編輯:處理錯誤。

documentation:Images API在本地計算機上進行測試期間,本地使用Python Imaging Library(PIL)轉換圖像。您需要下載PIL模塊並將其安裝到您的本地計算機上,以使用SDK中的Images API。

+0

感謝您的幫助,但沒有奏效,我得到了這個錯誤; 線68,在_transform_image 圖像= _get_images_stub()._ OpenImageData(IMAGE_DATA) AttributeError的: 'ImagesNotImplementedServiceStub' 對象有沒有屬性 '_OpenImageData' – Joseph 2013-05-10 19:49:37

+0

您需要安裝PIL的圖像API到本地機器上工作。請參閱編輯答案。 – 2013-05-10 20:00:17

+0

謝謝,但運行Python 2.7時無法安裝PIL,並且我不能使用2.5,有任何建議嗎? – Joseph 2013-05-10 20:12:26