Python 为什么不显示此图像(断开的图像图标)?
我试图显示我用下面的Python 为什么不显示此图像(断开的图像图标)?,python,image,google-app-engine,Python,Image,Google App Engine,我试图显示我用下面的DisplayImage处理程序保存到数据存储的图像,但我只看到一个断开的图像链接。你知道为什么吗?谢谢 class HomePage(db.Model): thumbnail = db.BlobProperty() firm_name = db.StringProperty() ... class ImageUpload(webapp.RequestHandler): def get(self): ... self.
DisplayImage
处理程序保存到数据存储的图像,但我只看到一个断开的图像链接。你知道为什么吗?谢谢
class HomePage(db.Model):
thumbnail = db.BlobProperty()
firm_name = db.StringProperty()
...
class ImageUpload(webapp.RequestHandler):
def get(self):
...
self.response.out.write("""
<form action="/imagesave" enctype="multipart/form-data" method="post">
<div><label>firm name:</label> <input type="text" name="firm_name" size=40></div>
<div><input type="file" name="img" /></div>
<div><input type="submit" value="Upload image"></div>
</form>
""")
class ImageSave(webapp.RequestHandler):
def post(self):
homepage = HomePage()
thumbnail = self.request.get("img")
firm_name = self.request.get("firm_name")
homepage.thumbnail = db.Blob(thumbnail)
homepage.firm_name = firm_name
homepage.put()
self.redirect("/imageupload")
class ImageResize(webapp.RequestHandler):
def post(self):
q = HomepageImage.all()
q.filter("firm_name", "mta")
qTable = q.get()
if qTable:
qTable.thumbnail = db.Blob(images.resize(self.request.get("img"), 32, 32))
db.put(qTable)
else:
self.response.out.write("""firm not found""")
self.redirect("/imageupload")
class DisplayImage(webapp.RequestHandler):
def get(self):
query = HomePage.all()
query.filter("firm_name", "mta")
result = query.get()
self.response.out.write("""firm name: %s""" % result.firm_name)
self.response.out.write("""<img src="img?img_id=%s"></img>""" %
result.key())
...
班级主页(db.Model):
缩略图=db.BlobProperty()
firm_name=db.StringProperty()
...
类ImageUpload(webapp.RequestHandler):
def get(自我):
...
self.response.out.write(“”)
公司名称:
""")
类ImageSave(webapp.RequestHandler):
def post(自我):
主页=主页()
缩略图=self.request.get(“img”)
firm\u name=self.request.get(“firm\u name”)
homepage.thumboil=db.Blob(缩略图)
homepage.firm\u name=公司名称
主页.put()
self.redirect(“/imageupload”)
类ImageResize(webapp.RequestHandler):
def post(自我):
q=HomepageImage.all()
q、 过滤器(“公司名称”、“mta”)
qTable=q.get()
如果可以:
qTable.thumboil=db.Blob(images.resize(self.request.get(“img”),32,32))
db.put(qTable)
其他:
self.response.out.write(““未找到公司”)
self.redirect(“/imageupload”)
类DisplayImage(webapp.RequestHandler):
def get(自我):
query=HomePage.all()
query.filter(“公司名称”、“mta”)
result=query.get()
self.response.out.write(““”公司名称:%s”“%result.firm\u名称)
self.response.out.write(“”“”%
result.key())
...
若要从blobstore提供图像,请使用获取服务url
,或者如果您有blobproperty,您可以查看我的旧代码,该代码以前在没有blobstore的情况下用于从图像类提供blobproperty服务:
class Image(db.Model):
name = db.StringProperty()
desc = db.StringProperty()
owner = db.UserProperty()
secret = db.StringProperty()
full = db.BlobProperty()
full_ext = db.StringProperty()
small = db.BlobProperty()
small_ext = db.StringProperty()
thumb = db.BlobProperty()
thumb_ext = db.StringProperty()
published = db.BooleanProperty()
added = db.DateTimeProperty(auto_now_add=True)
modified = db.DateTimeProperty(auto_now=True)
def thumb_name(self):
return '%s.%s' % (self.key(), self.thumb_ext)
def small_name(self):
return '%s_small.%s' % (self.key(), self.small_ext)
def full_name(self):
return '%s_full.%s' % (self.key(), self.full_ext)
class UploadImage(webapp.RequestHandler):
def post(self, key):
im = db.get(db.Key(key))
if not im:
self.error(404)
return
if self.request.POST['id'] != im.secret:
self.error(400)
return
file_data = self.request.POST['file'].file.read()
if self.request.POST['size'] == '100x100':
im.thumb = file_data
a = 'small'
elif self.request.POST['size'] == '500x500':
im.small = file_data
a = 'full'
if im.small and im.thumb:
im.published = True
im.save()
logging.info("%s updated %s" % (im.key(), a) )
self.response.out.write("ok")
mimetypes = {
'jpeg': 'image/jpeg',
'jpg': 'image/jpeg',
'tiff': 'image/tiff',
'tif': 'image/tiff',
'gif': 'image/gif',
'png': 'image/png',
}
class ServeImage(webapp.RequestHandler):
def get(self, key, sz, ext):
im = db.get(db.Key(key))
if not im:
self.error(404)
return
if sz == '.':
d = im.thumb
elif sz == '_small.':
d = im.small
elif sz == '_full.':
d = im.full
else:
raise Exception('wrong sz %r' % sz)
if not d:
d = im.full
else:
self.response.headers.add_header("Expires", "Thu, 01 Dec 2014 16:00:00 GMT")
self.response.headers["Content-Type"] = mimetypes[ext]
self.response.out.write(d)
此问题由我的中的
systempuntoout
回答。他注意到我将图像源指向一个未定义的错误img路径
正确的链接应指向/图像,如下所示:
负责实际显示图像的代码在哪里?您好,我以为这显示了图像:self.response.out.write(“”%result.key())
我缺少什么?谢谢。这将在HTML中创建一个图像标记,其源是图像的键。你有没有在URL上提供图像服务的代码?是的,在阅读了你的第一条评论后,我添加了一个image
处理程序,我认为这就是提供图像服务的代码。我用更新的代码问了一个新问题:。再次感谢!这个问题仍然有效吗?Niklas,谢谢,但我认为我的图像在数据存储中,而不是blobstore中?这是正确的吗?