我终于设法让图像在 App Engine 上正确旋转,现在我正在努力绕过缓存的图像,而标准缓存清除技术不起作用。
因此,第一次旋转图像时,我得到了一个不同的 URL,并且图像被旋转。
第二次旋转它时,我得到相同的 URL,只有在附加 =s300-c 后图像才会旋转,第三次旋转时,我需要将 =s300-c 更改为 -s301-c 才能看到新形象。
如果我返回 =s300-c,我会得到图像的先前旋转。
附加 ?datetimegoeshere 不起作用,这让我相信缓存发生在 Google 这边,并且这不是浏览器问题。
我可以在图像服务 URL 中附加什么内容,以便始终获得最新版本的图像?
我使用以下代码来编写旋转图像:
GcsServiceFactory.createGcsService().delete(fileName);
GcsOutputChannel outputChannel = GcsServiceFactory.createGcsService().createOrReplace( fileName, GcsFileOptions.getDefaultInstance());
outputChannel.write(ByteBuffer.wrap(newImage.getImageData()));
outputChannel.close();
这段代码用于生成新的服务 url:
String newImageUrl = imagesService.getServingUrl(ServingUrlOptions.Builder.withBlobKey(blobKey));
(其余源代码发布在这里:在 Google App Engine 中存储旋转/翻转的图像 https://stackoverflow.com/questions/22128693/storing-rotated-flipped-images-in-google-app-engine)
例如,此 URL 将为我提供该图像的一个版本:http://lh5.ggpht.com/bbZLUGp07DJNdnkN-ezjO5Gu2hSTMIMWXnRkFJ8i9buEBpjMDHMOxviwuJIIS96mPA_2tYTUbokVY16oNwzrt4g0_7Q=s505-c http://lh5.ggpht.com/bbZLUGp07DJNdnkN-ezjO5Gu2hSTMIMWXnRkFJ8i9buEBpjMDHMOxviwuJIIS96mPA_2tYTUbokVY16oNwzrt4g0_7Q=s505-c
这将返回同一图像的另一个版本(即使它应该返回相同的图像,只是大小不同):http://lh5.ggpht.com/bbZLUGp07DJNdnkN-ezjO5Gu2hSTMIMWXnRkFJ8i9buEBpjMDHMOxviwuJIIS96mPA_2tYTUbokVY16oNwzrt4g0_7Q=s504-c http://lh5.ggpht.com/bbZLUGp07DJNdnkN-ezjO5Gu2hSTMIMWXnRkFJ8i9buEBpjMDHMOxviwuJIIS96mPA_2tYTUbokVY16oNwzrt4g0_7Q=s504-c
如何让 Google App Engine 提供最新版本的图像?