Image Transformations Failing With Empty TransformationError exception

80 views
Skip to first unread message

PandaSuit

unread,
May 4, 2011, 1:14:48 PM5/4/11
to Google App Engine
This appears to have been an issue in March and then it just went
away. It is back now:
http://code.google.com/p/googleappengine/issues/detail?id=4775

Is anyone else having an issue where large (> 4MB) images
inconsistently fail to transform using the images API?

My snipped of code (which has been working perfectly with images up to
20MB before last week) is;

def loadImage(image_data=None, blob_key=None):
image = images.Image(image_data=image_data, blob_key=blob_key)
image.rotate(degrees=90)
image =
images.Image(image_data=image.execute_transforms(output_encoding=images.JPEG))
return image

I always call this function using a blob_key and the part that is
throwing the exception is the "image.execute_transforms()" function.
It does not seem to matter whether I give it a JPG or a PNG.

The traceback:

Traceback (most recent call last):
File "/base/data/home/apps/s~mediacooler-app/1-28.350162602241030413/
article/upload.py", line 39, in post
img = article.funcs.loadImage(blob_key=str(blob_info.key()))
File "/base/data/home/apps/s~mediacooler-app/1-28.350162602241030413/
article/funcs.py", line 213, in loadImage
image =
images.Image(image_data=image.execute_transforms(output_encoding=images.JPEG))
File "/base/python_runtime/python_lib/versions/1/google/appengine/
api/images/__init__.py", line 673, in execute_transforms
raise TransformationError()
TransformationError

According to the images API code in the SDK execute_transforms raises
a "TransformtionError when something errors during image
manipulation." In the code this happens only when the images service
returns an ImagesServiceError.UNSPECIFIED_ERROR.

It is really disturbing to have a piece of code be rock solid for
months (under load) and then start throwing exceptions out of the
blue. Real customers are using my service so this is a critical issue
for me.

- Bryce

Johan Euphrosine

unread,
May 8, 2011, 7:49:50 AM5/8/11
to google-a...@googlegroups.com
Hi Bryce,

Sorry for the late followup,

It seems that you got many errors when trying to upload the same large
image on 2011/05/06 around 09:34.

I can you share this image with us (privately if needed), that might
help to narrow it down further.

Thanks in advance.

> --
> You received this message because you are subscribed to the Google Groups "Google App Engine" group.
> To post to this group, send email to google-a...@googlegroups.com.
> To unsubscribe from this group, send email to google-appengi...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
>
>

--
Johan Euphrosine (proppy)
Developer Programs Engineer
Google Developer Relations

dala...@googlemail.com

unread,
Mar 16, 2012, 12:57:57 PM3/16/12
to google-a...@googlegroups.com
Hello. Please help if possible! We are having a similar issue now with www.historypin.com. Images pulled from the blobstore are not loading at all. We have over 50k images in the blobstore 
Code that hasn't been changed for quite some time seems to be throwing TransformationError. I did attempt to do a bulk upload in the morning but I can't see how that would have broken the  image serving across the entire site.

Error below:
Exception in request:
Traceback (most recent call last):
  File "/base/data/home/apps/historypin/vs3-12.357532709011180491/common/zip-packages/django-1.1.zip/django/core/handlers/base.py", line 92, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/base/data/home/apps/historypin/vs3-12.357532709011180491/application/urls.py", line 72, in free_pattern
    return view_fn(request, **paramArray)
  File "/base/data/home/apps/historypin/vs3-12.357532709011180491/application/controllers/services.py", line 51, in thumb
    contents_to_use = photo.getThumb(dimensions, quality, crop, nc)
  File "/base/data/home/apps/historypin/vs3-12.357532709011180491/application/models/photos.py", line 535, in getThumb
    dimension_image = dimension_image.execute_transforms(quality = 1, output_encoding = images.JPEG)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/images/__init__.py", line 763, in execute_transforms
    raise TransformationError()
TransformationError
<type 'exceptions.KeyError'>: 'request' Traceback (most recent call last): File "/base/data/home/apps/historypin/vs3-12.357532709011180491/common/appenginepatch/main.py", line 36, in real_main util.run_wsgi_app(application) File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/util.py", line 98, in run_wsgi_app run_bare_wsgi_app(add_wsgi_middleware(application)) File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/util.py", line 116, in run_bare_wsgi_app result = application(env, _start_response) File "/base/data/home/apps/historypin/vs3-12.357532709011180491/common/zip-packages/django-1.1.zip/django/core/handlers/wsgi.py", line 241, in __call__ File "/base/data/home/apps/historypin/vs3-12.357532709011180491/common/zip-packages/django-1.1.zip/django/core/handlers/base.py", line 134, in get_response File "/base/data/home/apps/historypin/vs3-12.357532709011180491/common/zip-packages/django-1.1.zip/django/core/handlers/base.py", line 166, in handle_uncaught_exception File "/base/data/home/apps/historypin/vs3-12.357532709011180491/common/zip-packages/django-1.1.zip/django/views/defaults.py", line 24, in server_error File "/base/data/home/apps/historypin/vs3-12.357532709011180491/__init__.py", line 178, in render File "/base/data/home/apps/historypin/vs3-12.357532709011180491/__init__.py", line 779, in render File "/base/data/home/apps/historypin/vs3-12.357532709011180491/__init__.py", line 792, in render_node File "/base/data/home/apps/historypin/vs3-12.357532709011180491/common/zip-packages/django-1.1.zip/django/template/loader_tags.py", line 97, in render File "/base/data/home/apps/historypin/vs3-12.357532709011180491/__init__.py", line 178, in render File "/base/data/home/apps/historypin/vs3-12.357532709011180491/__init__.py", line 779, in render File "/base/data/home/apps/historypin/vs3-12.357532709011180491/__init__.py", line 792, in render_node File "/base/data/home/apps/historypin/vs3-12.357532709011180491/application/templatetags/fragments.py", line 38, in render if context['request']: File "/base/data/home/apps/historypin/vs3-12.357532709011180491/common/zip-packages/django-1.1.zip/django/template/context.py", line 44, in __getitem__
Thanks
Michael

> To post to this group, send email to google-appengine@googlegroups.com.
> To unsubscribe from this group, send email to google-appengine+unsubscribe@googlegroups.com.


> For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
>
>

Reply all
Reply to author
Forward
0 new messages