Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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 如何获取GAE上传的图像大小_Python_Google App Engine - Fatal编程技术网

Python 如何获取GAE上传的图像大小

Python 如何获取GAE上传的图像大小,python,google-app-engine,Python,Google App Engine,我使用GAE上传图片,并使用google.appengine.api.images调整图片大小。但我希望上传此图片的原始大小。我尝试使用image.width和image.height。但是get int不是可调用的错误。非常感谢您的帮助 请参阅下面的代码: class PictureUploader( webapp.RequestHandler ): WANNA_RATIO_ = 0.833333 # icon width : height | 100 : 120 MAX_RA

我使用GAE上传图片,并使用google.appengine.api.images调整图片大小。但我希望上传此图片的原始大小。我尝试使用image.width和image.height。但是get int不是可调用的错误。非常感谢您的帮助

请参阅下面的代码:

class PictureUploader( webapp.RequestHandler ):
    WANNA_RATIO_ = 0.833333 # icon width : height | 100 : 120
    MAX_RATIO_ = 0.913043 # 105 : 115
    MIN_RATIO_ = 0.76 # 95 : 125
    def get( self ):
        self.post()

    def post( self ):
        if not check_session(self):
            self.redirect('login', True)

        from google.appengine.api import images   
        image_ = images.Image( self.request.get( 'picture' ) )

        from decimal import Decimal   
        i_width = Decimal( image_.size[0] )
        i_height = Decimal( image_.size[1] )
        w_h_ratio = i_width / i_height 
        if PictureUploader.MIN_RATIO_ > w_h_ratio: # picture too narrow
            h_ratio = i_height/120
            expected_w = Decimal("%.6f"%(i_width/h_ratio))
            image_ = images.resize(image_,expected_w,120)
        elif PictureUploader.MAX_RATIO_ < w_h_ratio: # picture too short
            w_ratio = i_width/100
            expected_h = Decimal("%.6f"%(i_height/w_ratio))
            image_ = images.resize(image_,100,expected_h)
        else:
            image_ = images.resize( image_, 100, 120 )

        models.Life(user = self.session['key'],pictureblob=image_).put()
class PictureUploader(webapp.RequestHandler):
想要比=0.833333#图标宽度:高度| 100:120
最大比率=0.913043#105:115
最低比率=0.76#95:125
def get(自我):
self.post()
def post(自我):
如果没有检查会话(self):
self.redirect('login',True)
从google.appengine.api导入图像
image=images.image(self.request.get('picture'))
从十进制输入十进制
i_宽度=十进制(图像大小[0])
i_高度=十进制(图像大小[1])
w_h_比率=i_宽度/i_高度
如果PictureUploader.MIN_RATIO>w_h_RATIO:#图片太窄
h_比率=i_高度/120
预期宽度=十进制(“%.6f”%(i\u宽度/h\u比率))
图像=图像。调整大小(图像大小,预期大小,120)
elif PictureUploader.MAX_RATIO u
您看到图像大小[0],它不起作用。

使用

image.height
image.width
您收到的错误意味着您正在调用这些属性,如:

image.height() -> wrong
image.width()  -> wrong
使用

您收到的错误意味着您正在调用这些属性,如:

image.height() -> wrong
image.width()  -> wrong

错误
int不可调用
似乎表明您在属性名称后意外放置了(),即您在属性名称后意外放置了
image.height()
,而它本应是
image.height。
错误
int不可调用
似乎表明您在属性名称后意外放置了(),ie你有
image.height()。让我详细说明我的问题,我不确定有两点:1。看到这里的“image\ux=images.image(self.request.get('picture')”,您可能知道GAE和picture是一个'input type=“file”“,所以我不知道像这样创建的image对象是否可以;2.如果Q1是正确的,我会更正像这样的代码“height=image.\u height width=image.\u width”,我用reflect查看这些属性是否存在(它们确实存在),但我得到了NoneType:None。图像上没有
size
属性。使用
image.width
image.height
可以得到所需的值。我刚刚试过,效果很好,但是
AttributeError:“Image”对象没有属性“size”
yes。它起作用了。哦,我忘记了我是如何得到这种错误的,现在我得到了一个新的错误,当我把它放入数据存储时,“RequestTooLargeError:API调用数据存储的请求_v3.put()太大了。”发生了。你能对此或任何解决方案发表意见吗?我猜你的文件大于1mb,这是数据存储实体的限制。您应该将文件存储在blobstore a中,并使用
BlobKeyProperty
引用它。要将文件写入blobstore,如果您没有通过上载url上载文件,则应使用文件api()。您好,我刚才看到了这一点,但如果没有“RequestTooLargeError对api调用数据存储的请求\u v3.put%28太大”,我无法找到如何将图像放入db.BlobProperty中,存储部件%28最后一行的代码没有更改。若我并没有将图片调整为小图片,那个么就会发生错误。你能帮忙吗?对不起,它仍然不起作用,我不知道我使用GAE API是否正确,如果我完全错了,请纠正我。让我详细说明我的问题,我不确定有两点:1。看到这里的“image\ux=images.image(self.request.get('picture')”,您可能知道GAE和picture是一个'input type=“file”“,所以我不知道像这样创建的image对象是否可以;2.如果Q1是正确的,我会更正像这样的代码“height=image.\u height width=image.\u width”,我用reflect查看这些属性是否存在(它们确实存在),但我得到了NoneType:None。图像上没有
size
属性。使用
image.width
image.height
可以得到所需的值。我刚刚试过,效果很好,但是
AttributeError:“Image”对象没有属性“size”
yes。它起作用了。哦,我忘记了我是如何得到这种错误的,现在我得到了一个新的错误,当我把它放入数据存储时,“RequestTooLargeError:API调用数据存储的请求_v3.put()太大了。”发生了。你能对此或任何解决方案发表意见吗?我猜你的文件大于1mb,这是数据存储实体的限制。您应该将文件存储在blobstore a中,并使用
BlobKeyProperty
引用它。要将文件写入blobstore,如果您没有通过上载url上载文件,则应使用文件api()。您好,我刚才看到了这一点,但如果没有“RequestTooLargeError对api调用数据存储的请求\u v3.put%28太大”,我无法找到如何将图像放入db.BlobProperty中,存储部件%28最后一行的代码没有更改。若我并没有将图片调整为小图片,那个么就会发生错误。你能帮忙吗。