Google app engine 使用ImageServices getServingUrl获取原始图像

Google app engine 使用ImageServices getServingUrl获取原始图像,google-app-engine,Google App Engine,getServingUrl是一种从AppEngine数据存储中获取图像的便捷方法,但它似乎希望自动转换图像 例如,如果我这样做: ServingUrlOptions servingUrlOptions = ServingUrlOptions.Builder.withBlobKey(blobKey); String payload = "{ \"image\" : \"" + mImagesService.getServingUrl(servingUrlOptions) + "\" }"; 我得

getServingUrl是一种从AppEngine数据存储中获取图像的便捷方法,但它似乎希望自动转换图像

例如,如果我这样做:

ServingUrlOptions servingUrlOptions = ServingUrlOptions.Builder.withBlobKey(blobKey);
String payload = "{ \"image\" : \"" + mImagesService.getServingUrl(servingUrlOptions) + "\" }";
我得到了一个指向具有大小调整尺寸的图像的URL。例如,如果我上载一个960 x 640的图像,默认URL将指向一个512 x 341的图像

因此,您可以说,在URL中应用一个转换并设置s960。这确实会返回一个960x640的图像,但它已被转换——如果您将其与原始图像进行比较,您可以看到图像中的瑕疵

由于我发现了一种将图像裁剪为原始大小的技术,服务器可以适当地存储图像:

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更好的解决方案来服务原始图像?

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


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

Hmm,我正在本地运行此操作,如果我尝试这样做,我会看到:“错误500 ApplicationError:2:无效调整大小:宽度和高度不能都为0。”我正在使用GAE 1.7.3…@BenFlynn-Hmm。。为Python工作。。你能试着部署它看看它是否在那里工作吗@BenFlynn尝试向这个URL添加一些参数:=s0、=s128、=s256,这在您的站点上是有效的。做一个初始部署,看看我是否能让它工作…@BenFlynn你可以提交一个问题,因为在文档中,他们说值可以从0到1600,在你的情况下,它在java本地不工作。使用PHP而不是java你可以参考这篇文章