旋转GAE BlobStore中的图像

时间:2015-03-19 11:46:22

标签: java google-app-engine blobstore

我试图旋转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?
...

1 个答案:

答案 0 :(得分:0)

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

  

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

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

如果您控制了客户端(浏览器上的Javascript应用程序),您可以解决这个问题,将字节发送到浏览器并立即转换Javascript并上传"上传&#34 ;新的blobstore。但这真的很糟糕 - 本质上很慢,增加了一次往返旅行"到浏览器并返回可能的大图像数据。

相反,在你的鞋子里,我将此作为另一个诱因,让blobstore落后并转而转向谷歌云存储 - 特别是https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/

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