【问题标题】:Resize image in Google Cloud Storage在 Google Cloud Storage 中调整图像大小
【发布时间】:2014-06-16 03:54:21
【问题描述】:

appengine/image 包适用于存储在 Blobstore 中的图像。但是,调整存储在 Google Cloud Storage 中的图像大小的好方法是什么?

【问题讨论】:

    标签: google-app-engine go


    【解决方案1】:

    您可以将相同的图片服务与 Google Cloud Storage 一起使用,尤其是在您使用 Blobstore API 上传图片时。

    Java 示例代码:

    String fullName = "/gs/" + bucketName + "/" + objectName;
    Image picture = ImagesServiceFactory.makeImageFromFilename(fullName);
    Transform resize = ImagesServiceFactory.makeResize(maxWidth, maxHeight);
    picture = imagesService.applyTransform(resize, picture);
    

    在 Go 中,你可以使用BlobKeyForFile 函数:

    BlobKeyForFile 返回 Google 存储文件的 BlobKey。这 文件名的格式应为“/gs/bucket_name/object_name”。

    【讨论】:

    • 我没有使用 Blobstore API。该服务需要一个 Blogstore Key 作为参数。如何从 Cloud Storage 获取此信息?任何具体的代码 sn-p 都会很棒。
    • 有一些方法可以从云存储文件名创建一个 blob 密钥,这样您就可以将它提供给 blobstore API - 就像魔术一样。例如在 java 中它被称为 BlobstoreService.createGsBlobKey() 或类似的东西。
    • 如何将picture 保存回 App Engine 内的谷歌云存储?
    • 您可以从Image 中获取byte[] 并将其保存到云存储。请记住设置正确的内容类型(例如“image/jpeg”)和文件扩展名,否则将无法在浏览器中打开。
    【解决方案2】:

    如今,图像裁剪功能相当容易实现。然后,您可以对图像执行任何操作 - 将其存储回 Google Storage 或立即将其返回给客户端。 此外,您可以轻松地将该功能部署到任何基于云的无服务器解决方案。我使用的是Cloud Run,因为它是基于 Docker 的,因此可以潜在地移植到任何地方。

    我有一个 service,我们用于基于 nodejs/sharp 进行图像裁剪并部署到 Google Cloud Run 中。您可以按原样使用它。其中没有任何特定于项目的硬编码。

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 2020-03-20
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多