我一直在使用谷歌云存储来保存用户从移动应用程序上传的照片(使用flutter和firebase构建(,最近我需要调整图像大小/转换图像,我想探索是否可以直接从谷歌云存储中进行此操作!
我发现了这个项目https://github.com/albertcht/python-gcs-image你必须部署在谷歌应用程序引擎上,如果你用一个bucket和一个图像调用它,它会返回一个指向谷歌CDN的URL,我想是这样的http://lh3.googleusercontent.com/*)。
我查看了存储库中的代码,它唯一能做的就是返回google.appengine.api.images.get_serving_url
的结果,我不明白为什么我不能直接从我的dart代码中获得这个serving_url?
谷歌云存储和lh3.googleusercontent.com有什么区别??我可以直接从云存储进行相同的图像处理吗?
我必须运行一个只返回URL的应用程序引擎应用程序,这似乎很奇怪?我错过了什么?
库使用这个api。它在Python 2.7中,其寿命将于2020年1月1日结束。
此外,镜像api仅适用于AppEngine第1代(python 2.7(,而不适用于第2代(python 3(。
所有这些都是不建议您使用的。
目前最好的设计是在上传文件时执行调整大小/裁剪,并将结果存储在云存储中。示例此处和此处
然后,您只需要从云存储提供调整大小/裁剪的图像。
Look@Firebase Extensions,已经提供了这样的扩展
我发现的是:
谷歌应用引擎的Java、Python和go标准环境包括GAE Images API(Java、Python,翻转和裁剪图像,并返回图像服务URL允许客户端转换,类似于Cloudinary和Imgix。这也符合我以前的理解和经验。CCD_ 2对图像处理非常方便。
话虽如此,正如您正确指出的,它首先是AppEngine的一个功能,需要您以一种方式在另一种方式上使用AppEngine。
如果这不是你想要的,你可以创建一个服务来裁剪你的图像,并在无服务器的情况下部署它。与让AppEngine服务全天候运行相比,它的负担要轻得多。更重要的是,AWS有几个预先准备好的模板可以做到这一点——只需点击几下就可以部署裁剪图像。
如果你和我一样,对谷歌云解决方案感兴趣,我可以提供我写的类似功能。它可以按原样部署在Cloud Run中。请参阅我的另一个答案中的详细信息。有了它,你不仅可以调整移动图像的大小,还可以将你自己的域映射到云运行功能,并将其放在你喜欢的任何CDN后面,这可能会比谷歌存储的服务更快。你可以在互联网上找到很多关于为什么完整的CND比光秃秃的谷歌存储更好的信息。