Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 破碎的图像-谷歌应用程序引擎_Python_Image_Forms_Google App Engine - Fatal编程技术网

Python 破碎的图像-谷歌应用程序引擎

Python 破碎的图像-谷歌应用程序引擎,python,image,forms,google-app-engine,Python,Image,Forms,Google App Engine,首先,我意识到这是一个相当常见的问题,我已经研究了许多其他类似的问题,但没有一个答案解决了这个问题 <div class="card-image"><img src="/image?img_id={{card.key()}}"></img> class Card(db.Model): image = db.BlobProperty(required = True) class Image(MainHandler): def get(self

首先,我意识到这是一个相当常见的问题,我已经研究了许多其他类似的问题,但没有一个答案解决了这个问题

<div class="card-image"><img src="/image?img_id={{card.key()}}"></img>

class Card(db.Model):
    image = db.BlobProperty(required = True)

class Image(MainHandler):
    def get(self):
        card = db.get(self.request.get('img_id'))
        if card.image:
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(card.image)
        else:
            self.response.out.write('No image')
 class Gallery(MainHandler):
       image = db.Blob(images.resize(self.request.get('image'), 32, 32))
       #later in the code, a Card is constructed.
基本上,一旦用户提交图片->他们将作为空白图片发布-当我单击图片的src时,我将看到一个空白页面。我的代码怎么了

<div class="card-image"><img src="/image?img_id={{card.key()}}"></img>

class Card(db.Model):
    image = db.BlobProperty(required = True)

class Image(MainHandler):
    def get(self):
        card = db.get(self.request.get('img_id'))
        if card.image:
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(card.image)
        else:
            self.response.out.write('No image')
 class Gallery(MainHandler):
       image = db.Blob(images.resize(self.request.get('image'), 32, 32))
       #later in the code, a Card is constructed.
这里是我从各种文件中提取的代码片段的混搭

<div class="card-image"><img src="/image?img_id={{card.key()}}"></img>

class Card(db.Model):
    image = db.BlobProperty(required = True)

class Image(MainHandler):
    def get(self):
        card = db.get(self.request.get('img_id'))
        if card.image:
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(card.image)
        else:
            self.response.out.write('No image')
 class Gallery(MainHandler):
       image = db.Blob(images.resize(self.request.get('image'), 32, 32))
       #later in the code, a Card is constructed.

分类卡(数据库型号):
image=db.BlobProperty(必需=True)
类映像(MainHandler):
def get(自我):
card=db.get(self.request.get('img\u id'))
如果是card.image:
self.response.headers['Content-Type']='image/png'
自我.回应.输出.写入(卡片.图像)
其他:
self.response.out.write('无图像')
类库(MainHandler):
image=db.Blob(images.resize(self.request.get('image'),32,32))
#在代码的后面,将构造一张卡。

我觉得你的代码很好。您确定您的模型包含图像数据吗

<div class="card-image"><img src="/image?img_id={{card.key()}}"></img>

class Card(db.Model):
    image = db.BlobProperty(required = True)

class Image(MainHandler):
    def get(self):
        card = db.get(self.request.get('img_id'))
        if card.image:
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(card.image)
        else:
            self.response.out.write('No image')
 class Gallery(MainHandler):
       image = db.Blob(images.resize(self.request.get('image'), 32, 32))
       #later in the code, a Card is constructed.
第二。有一种更好、更快、更便宜的方式可以为您的图像提供服务。谷歌可以使用AppEngine的高性能图像服务系统为您提供图像服务,几乎是免费的,并且可以在运行时调整大小。要使用它,您必须使用blobstore和get\u service\u url

<div class="card-image"><img src="/image?img_id={{card.key()}}"></img>

class Card(db.Model):
    image = db.BlobProperty(required = True)

class Image(MainHandler):
    def get(self):
        card = db.get(self.request.get('img_id'))
        if card.image:
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(card.image)
        else:
            self.response.out.write('No image')
 class Gallery(MainHandler):
       image = db.Blob(images.resize(self.request.get('image'), 32, 32))
       #later in the code, a Card is constructed.
以下是服务url的示例:

<div class="card-image"><img src="/image?img_id={{card.key()}}"></img>

class Card(db.Model):
    image = db.BlobProperty(required = True)

class Image(MainHandler):
    def get(self):
        card = db.get(self.request.get('img_id'))
        if card.image:
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(card.image)
        else:
            self.response.out.write('No image')
 class Gallery(MainHandler):
       image = db.Blob(images.resize(self.request.get('image'), 32, 32))
       #later in the code, a Card is constructed.

<div class="card-image"><img src="/image?img_id={{card.key()}}"></img>

class Card(db.Model):
    image = db.BlobProperty(required = True)

class Image(MainHandler):
    def get(self):
        card = db.get(self.request.get('img_id'))
        if card.image:
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(card.image)
        else:
            self.response.out.write('No image')
 class Gallery(MainHandler):
       image = db.Blob(images.resize(self.request.get('image'), 32, 32))
       #later in the code, a Card is constructed.
更新

<div class="card-image"><img src="/image?img_id={{card.key()}}"></img>

class Card(db.Model):
    image = db.BlobProperty(required = True)

class Image(MainHandler):
    def get(self):
        card = db.get(self.request.get('img_id'))
        if card.image:
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(card.image)
        else:
            self.response.out.write('No image')
 class Gallery(MainHandler):
       image = db.Blob(images.resize(self.request.get('image'), 32, 32))
       #later in the code, a Card is constructed.
如果您是blobstore的新手,我的建议是开始上传和服务blobstore中的图像。请参阅文档中的代码示例

<div class="card-image"><img src="/image?img_id={{card.key()}}"></img>

class Card(db.Model):
    image = db.BlobProperty(required = True)

class Image(MainHandler):
    def get(self):
        card = db.get(self.request.get('img_id'))
        if card.image:
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(card.image)
        else:
            self.response.out.write('No image')
 class Gallery(MainHandler):
       image = db.Blob(images.resize(self.request.get('image'), 32, 32))
       #later in the code, a Card is constructed.
在这项工作完成后,您可以优化并使用get_service_url。您只需获取此服务url一次并保存在数据存储中,就可以在html img标记中使用

<div class="card-image"><img src="/image?img_id={{card.key()}}"></img>

class Card(db.Model):
    image = db.BlobProperty(required = True)

class Image(MainHandler):
    def get(self):
        card = db.get(self.request.get('img_id'))
        if card.image:
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(card.image)
        else:
            self.response.out.write('No image')
 class Gallery(MainHandler):
       image = db.Blob(images.resize(self.request.get('image'), 32, 32))
       #later in the code, a Card is constructed.
以下是获取blobstore blob的服务url的代码示例,其中blob引用保存在数据存储中:

<div class="card-image"><img src="/image?img_id={{card.key()}}"></img>

class Card(db.Model):
    image = db.BlobProperty(required = True)

class Image(MainHandler):
    def get(self):
        card = db.get(self.request.get('img_id'))
        if card.image:
            self.response.headers['Content-Type'] = 'image/png'
            self.response.out.write(card.image)
        else:
            self.response.out.write('No image')
 class Gallery(MainHandler):
       image = db.Blob(images.resize(self.request.get('image'), 32, 32))
       #later in the code, a Card is constructed.
class Dynamic(db.Model):                                                                        # key : name
    name = db.StringProperty() 
    blob_ref = blobstore.BlobReferenceProperty()
    serving_url = db.LinkProperty()

dyn= Dynamic.get_by_key_name(key_name)
try :                                                                               # get url with size = 0, do not save it
    dyn.serving_url = images.get_serving_url(dyn.blob_ref, size=None, secure_url=True)
except DeadlineExceededError : 
    try :             # sometimes this request fails, retry. This always works fine
        dyn.serving_url = images.get_serving_url(dyn.blob_ref, size=None, secure_url=True)
    except DeadlineExceededError :
        logging.error('Image API get_serving_url deadline error after retry' %(dyn.key().name()))                        
                return None
    dyn.put()

根据Datastore Viewer,确实存在图像,或者至少显示图像(Blob)。此外,对于get_serving_url,它是否会放在我上面代码顶部的html中,而不是/image?img_id={{{{card.key()},因为我尝试了这个方法,但也没有效果。不,您将生成的url放在html中。顺便说一下,您的html img标记不正确,但我不认为这是问题的原因。你不需要这个零件。使用blobstore时,您可以在管理查看器中查看图像。现在你只看到:我会给你打勾,因为你真的很努力地帮助我,即使我还不能让它工作(尚未)。按照文档和使用blobstore的例子上传一个图像到blobstore,这样你可以看到它与blobstore查看器在管理控制台。完成后,您可以从blobstore提供图像服务。现在,您已经准备好使用get_serving_url。