[英]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.