使用ImageServices getServingUrl获取原始图像

Ben*_*ynn 4 google-app-engine

getServingUrl是从AppEngine数据存储区获取图像的便捷方式,但它似乎想要自动转换图像.

例如,如果我这样做:

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

我得到一个尺寸调整大小的图片的URL.例如,如果我上传960 x 640图像,默认网址会指向512 x 341图像.

所以,你说,在URL中应用一个变换并设置s960.这确实返回了一个960 x 640的图像,但它已被转换 - 如果将它与原始图像进行比较,您可以在图像中看到伪像.

服务器正在适当地存储图像,这要归功于我在这里找到一种原始尺寸裁剪的技术:

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());
Run Code Online (Sandbox Code Playgroud)

我实际上并没有查看它是否包含原始字节,但它并不重要,因为如果我要回发送字节,我不妨直接从商店中取出数据并将其设置为自定义映像服务servlet的有效负载.

写这个我意识到这听起来更像是一个功能请求而不是一个问题,所以我会这样说:服务原始图像比通过自定义servlet有更好的解决方案吗?

Lip*_*pis 8

您可以将其添加=s0到生成的URL的末尾以获取原始图像.

默认情况下,如果不添加任何参数,则图像的最大大小为512px(与添加时相同=s512).您可以在文档和选项中阅读有关getServingUrl的更多信息.

  • @BenFlynn你可以提交一个问题,因为在文档中他们说这个值可以是0到1600,在你的情况下它不能在java本地工作. (2认同)