2015-03-19 38 views
0

我試圖旋轉blobstore中的圖像,然後將其保存回blobstore,但我無法弄清楚如何將其保存回blobstore?我確實發現this,但它看起來像FileService API已被棄用,所以我用什麼來代替?這裏是我到目前爲止的代碼:在GAE中旋轉圖像BlobStore

// 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

您需要雲存儲,請參閱https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/ – 2015-03-19 11:58:26

回答

0

不幸的是,你正在運行到一個作爲記錄https://cloud.google.com/appengine/docs/java/blobstore/的Blob存儲區的限制...:

應用程序無法創建或修改,除非通過 Blob存儲值用戶上傳的文件。

......而這正是你想做的事 - 創建一個Blob存儲值,而不是通過讓用戶上傳文件,而是通過節省由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/,它傳遞的是byte[]ByteBuffer.wrap,瞧,這一切都爲你做,簡單,快速,無併發症。