2012-12-09 38 views
4

getServingUrl是一種從AppEngine數據存儲獲取圖像的便捷方式,但似乎想要自動轉換圖像。使用ImageServices獲取原始圖像getServingUrl

例如,如果我這樣做:

ServingUrlOptions servingUrlOptions = ServingUrlOptions.Builder.withBlobKey(blobKey); 
String payload = "{ \"image\" : \"" + mImagesService.getServingUrl(servingUrlOptions) + "\" }"; 

我得到一個URL與調整大小尺寸的圖像。例如,如果我上傳960 x 640圖像,則默認網址會將我指向512 x 341圖像。

所以,你說,在URL中應用變換並設置s960。這確實會返回一個960 x 640的圖像,但它已經被轉換 - 如果您將圖像與原始圖像進行比較,則可以看到圖像中的工件。

服務器適當地存儲圖像,這要歸功於技術,我發現here做裁剪到原來的大小:

Image image = ImagesServiceFactory.makeImageFromBlob(blobKey); 
Transform noOpCrop = ImagesServiceFactory.makeCrop(0, 0, 1, 1); 
image = mImagesService.applyTransform(noOpCrop, image);      
LOGGER.info("Stored image " + image.getWidth() + ", " + image.getHeight()); 

我還沒有實際看,看是否包含原始字節或不是,但它並不重要,因爲如果我只是要發回字節,我不妨將數據直接從存儲中取出,並將其設置爲自定義圖像服務servlet的有效負載。

寫這我意識到這聽起來更像是一個比一個問題,功能請求,所以我會提出這樣說:有沒有更好的解決方案,通過一個特定的servlet服務的原始圖像比?

+0

使用PHP而不是Java可以參考這篇文章http://stackoverflow.com/questions/37646849/how-can-we-use-firebase-image-file-and-resize-them-using-get-serving -url/37673504#37673504 –

回答

8

您可以將=s0添加到生成的URL的末尾,以獲得原始圖像。

默認情況下,如果你不加任何參數,圖像將有512像素最大尺寸(一樣的,如果你想補充=s512)。您可以在文檔和選項中閱讀關於getServingUrl的更多信息。

+1

嗯,我在本地運行,如果我嘗試看到:「Error 500 ApplicationError:2:Invalid resize:width and height can not be 0.」我正在使用GAE 1.7.3 ... –

+0

@BenFlynn嗯..爲Python工作..你可以嘗試部署它,看看它是否在那裏工作?! – Lipis

+0

@BenFlynn http://goo.gl/R69zu嘗試添加一些參數到這個URL:= s0,= s128,= s256-c – Lipis

相關問題