"image contains error", trying to create and display images using google app engine
- by bert
Hello all the general idea is to create a galaxy-like map. I run into problems when I try to display a generated image. I used Python Image library to create the image and store it in the datastore.
when i try to load the image i get no error on the log console and no image on the browser.
when i copy/paste the image link (including datastore key) i get a black screen and the following message:
The image
“view-source:/localhost:8080/img?img_id=ag5kZXZ-c3BhY2VzaW0xMnINCxIHTWFpbk1hcBgeDA”
cannot be displayed because it contains errors.
the firefox error console:
Error: Image corrupt or truncated:
/localhost:8080/img?img_id=ag5kZXZ-c3BhY2VzaW0xMnINCxIHTWFpbk1hcBgeDA
import cgi
import datetime
import urllib
import webapp2
import jinja2
import os
import math
import sys
from google.appengine.ext import db
from google.appengine.api import users
from PIL import Image
#SNIP
#class to define the map entity
class MainMap(db.Model):
defaultmap = db.BlobProperty(default=None)
#SNIP
class Generator(webapp2.RequestHandler):
def post(self):
#SNIP
test = Image.new("RGBA",(100, 100))
dMap=MainMap()
dMap.defaultmap = db.Blob(str(test))
dMap.put()
#SNIP
result = db.GqlQuery("SELECT * FROM MainMap LIMIT 1").fetch(1)
if result:
print"item found<br>" #debug info
if result[0].defaultmap:
print"defaultmap found<br>" #debug info
string = "<div><img src='/img?img_id=" + str(result[0].key()) + "' width='100' height='100'></img>"
print string
else:
print"nothing found<br>"
else:
self.redirect('/?=error')
self.redirect('/')
class Image_load(webapp2.RequestHandler):
def get(self):
self.response.out.write("started Image load")
defaultmap = db.get(self.request.get("img_id"))
if defaultmap.defaultmap:
try:
self.response.headers['Content-Type'] = "image/png"
self.response.out.write(defaultmap.defaultmap)
self.response.out.write("Image found")
except:
print "Unexpected error:", sys.exc_info()[0]
else:
self.response.out.write("No image")
#SNIP
app = webapp2.WSGIApplication([('/', MainPage),
('/generator', Generator),
('/img', Image_load)],
debug=True)
the browser shows the "item found" and "defaultmap found" strings and a broken imagelink
the exception handling does not catch any errors
Thanks for your help
Regards
Bert