[英]Rotating an image in the GAE BlobStore
我正在尝试旋转blobstore中的图像,然后将其保存回blobstore,但是我不知道如何将其保存回blobstore? 我确实找到了它 ,但好像FileFile 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?
...
不幸的是,您遇到了blobstore的局限性,如https://cloud.google.com/appengine/docs/java/blobstore/ ...所述:
除通过用户上传的文件外,应用程序无法创建或修改Blobstore值。
...而这正是您要执行的操作-创建blobstore值,而不是让用户上传文件,而是保存img.getImageData()
返回的byte[]
。
如果您控制客户端(浏览器上的Javascript应用程序),则可以解决此问题,将字节发送给浏览器,并让Javascript立即转身并“上传”新的Blobstore。 但这确实是很棘手的,而且本质上很慢,给浏览器增加了“往返”功能,并返回了可能很大的图像数据。
相反,我想以此为诱因,将blobstore抛在后面,而转移到Google云存储-特别是https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/ 。
例如,使用GCS,您可以只使用服务的createOrReplace
方法,该方法在https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/javadoc/中进行了说明 ,并将该byte[]
的ByteBuffer.wrap
传递给它,然后瞧,这一切都为您完成了,简单,快速,无并发症。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.