【问题标题】:Rotating an image in the GAE BlobStore在 GAE BlobStore 中旋转图像
【发布时间】:2015-05-22 12:24:52
【问题描述】:

我正在尝试旋转 blobstore 中的图像,然后将其保存回 blobstore,但我不知道如何将其保存回 blobstore?我确实找到了this,但看起来 FileService API 已被弃用,那么我应该改用什么?到目前为止,这是我的代码:

// Get image from blobstore
Image img = ImagesServiceFactory.makeImageFromBlob(new BlobKey(document.blobstoreKey));

// Rotate 90 degrees
Transform transform = ImagesServiceFactory.makeRotate(90);
img = ImagesServiceFactory.getImagesService().applyTransform(transform, img);

// HERE: How to save back to the blobstore?
...

【问题讨论】:

标签: java google-app-engine blobstore


【解决方案1】:

不幸的是,您遇到了 https://cloud.google.com/appengine/docs/java/blobstore/ 中记录的 blobstore 的限制之一...:

应用程序无法创建或修改 Blobstore 值,除非通过 用户上传的文件。

...这正是您想要做的——创建一个 blobstore 值,不是通过让用户上传文件,而是通过保存 img.getImageData() 返回的 byte[]

如果您可以控制客户端(浏览器上的 Javascript 应用程序),您可以破解一些技巧,将字节发送到浏览器并让 Javascript 立即转身并“上传”新的 blobstore。但这真的很麻烦——而且本质上很慢,为浏览器添加“往返”并返回可能较大的图像数据。

相反,在您的情况下,我会将此作为另一种诱因,将 blobstore 抛在后面,转而使用谷歌云存储——特别是 https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/

使用 GCS,例如,您可以使用服务的 createOrReplace 方法,记录在 https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/javadoc/ 中,将 ByteBuffer.wrap 传递给 byte[],瞧,这一切都为您完成,简单,快速,没有并发症。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 2013-07-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    相关资源
    最近更新 更多