Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 谷歌图像API';s执行“u transforms()返回”;出现了一个错误";_Python_Image_Google App Engine_Google Cloud Storage - Fatal编程技术网

Python 谷歌图像API';s执行“u transforms()返回”;出现了一个错误";

Python 谷歌图像API';s执行“u transforms()返回”;出现了一个错误";,python,image,google-app-engine,google-cloud-storage,Python,Image,Google App Engine,Google Cloud Storage,我正在尝试使用谷歌的图像处理API。这看起来很简单,但是当我在图像对象上调用execute\u transforms时,它抛出一个通用的“有一个错误” gcs\u文件位置是正确的,在调用execute\u transforms()之前不会抛出错误。图像文件不是太大 从google.appengine.api导入图像 gcs文件位置='/gs/'+gcs文件位置 img=images.Image(文件名=gcs\u文件位置) 调整图像大小(宽度=50,高度=50) #下面的代码抛出“有一个错误”

我正在尝试使用谷歌的图像处理API。这看起来很简单,但是当我在
图像
对象上调用
execute\u transforms
时,它抛出一个通用的“有一个错误”

gcs\u文件位置是正确的,在调用execute\u transforms()之前不会抛出错误。图像文件不是太大

从google.appengine.api导入图像
gcs文件位置='/gs/'+gcs文件位置
img=images.Image(文件名=gcs\u文件位置)
调整图像大小(宽度=50,高度=50)
#下面的代码抛出“有一个错误”
缩略图=img.execute_transforms()

我花了一些时间,但我成功地复制了您的场景,因此我设置了一个Python 2.7环境(根据的教程),并使用中的代码设置Django所需的所有文件,并在for Django的帮助下运行它

然后,我修改了服务轮询以执行引发这些错误的函数

def索引(请求):
filename\u gs=request.GET.GET(“id”)
img=images.Image(文件名=filename\u gs)
调整图像大小(宽度=1000,高度=1000)
缩略图=img.execute_transforms()
我发现您的确是对的,在函数
execute\u transforms
中,会引发和错误并停止执行。但是,我没有您所指的一般错误,我得到以下信息:

文件“/home/polortiz/djangoo/mytry3/python docs samples/appengine/standard/django/polls/views.py”,索引第48行
缩略图=img.execute_transforms()
文件“/google/google-cloud-sdk/platform/google\u-appengine/google/appengine/api/images/\uuuu-init\uuu.py”,第810行,在execute\u-transforms中
返回rpc.get_result()
文件“/google/google cloud sdk/platform/google\u appengine/google/appengine/api/apiproxy\u stub\u map.py”,第615行,在get\u result中
返回self.\u获取\u结果\u挂钩(self)
文件“/google/google-cloud-sdk/platform/google\u-appengine/google/appengine/api/images/\u_-init\u___;.py”,第898行,在execute\u-transforms\u-hook中
升到图像接收器(e,自我锁定键)
变换误差
我进行了进一步调查,以检查哪些问题可能会引发这些错误,并找到了。在那里,您可以看到所有引发这些错误的异常:

  • BadRequestError:当请求规范无效时
  • NotImageError:当给定的图像数据不是图像时
  • BadImageError:当给定的图像数据损坏时
  • LargeImageError:当给定的图像数据太大而无法处理时
  • InvalidBlobKeyError:当提供的blob密钥无效时
  • TransformationError:在图像处理过程中发生错误时
  • AccessDeniedError:当blob键引用Google存储对象,并且应用程序没有访问该对象的权限时
  • ObjectNotFoundError:当blob键引用不再存在的对象时
因此,为了解决您的问题,最好检查所有这些要点。回答评论中提出的问题:

django与Google的Imaging API不兼容,还是我需要导入WebApp2


Google的Imaging API与Django兼容。使用WebApp2来处理http请求和响应不是强制性的。

我最近在使用
get\u service\u url()时也注意到了这个问题
在禁用粒度权限的GCS存储桶中的图像文件上。出于某种原因,图像API似乎会在这样的存储桶上抛出一个
转换错误,即使没有发生转换。这说明必须创建一个新存储桶,并确保使用粒度权限以避免错误。

I使用相同的代码进行测试,但从本地图像读取,函数
img.execute\u transforms()
没有引发一般性的“出现错误”,因此,请检查图像是否正确读取,并且
img
类型是否为
。同时在日志中搜索该错误,可能存在更具体的错误堆栈跟踪。它确实具有类型,并且在App Engine的日志中也没有记录错误消息!我使用官方文档复制了您的错误。Fr我刚刚修改了该代码,以便获得作为http参数(
id
)的图像路径(
/gs/
),然后我部署了它,它工作正常。你能写下你为了看到错误而采取的确切步骤吗?同时,如果能看到完整的代码以便重现你的错误,那也太好了,谢谢。一个不同之处是,我使用Django作为后端web框架。Django与Google的Imaging API不兼容吗ed导入WebApp2?除此之外,所有相关代码都显示在上面,我相当确定GS路径是正确的,它的格式如下:/GS/371/3612ae-63163s-3。感谢您的回复。感谢Pol,我最终使用Python图像库进行图像处理,因为我无法让它工作。很可能也是这样你得到的转换错误,这仍然是一个相当普遍的错误。我接受你的答案,如果你能弄清楚到底发生了什么,我很想听听。