2013-04-14 2 views
0

Google App Engine 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) 
위의이 스레드에서 가져에서 코드를

: 내가 위의 예/IMG/373의 코드를 실행하면 GAE: How to get the blob-image height

내가 오류를 얻을 :

"http : ..../img/373"이미지에 오류가 있기 때문에 표시 할 수 없습니다. 어떻게하면 되나요? .. 이미지에서 해당 얼룩을 변환하는 방법을 찾아야합니다. 그런 다음 이미지를 처리하십시오.

+0

'execute_transforms'에서 인코딩을 JPEG로 지정하고 응답 헤더에 PNG로 지정합니다. 이거 야? – Dave

+0

내 많은 attemps에서 나는'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

첫 번째 대답은 가까웠습니다. = 1024 크기는 동적 이미지의 원래 비율을 유지하면서 긴 쪽 1024 픽셀로 소스 BLOB 이미지 크기를 조정, 위의 코드에서

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

이 약간의 정제는 명시 적으로 크기를 조정할 수 있습니다.