我有一个保存用户个人资料图片的实体。为了简单起见,我只存储服务 URL。我允许我的用户裁剪他们的图像。为此,我从服务 URL 获取图像并创建一个com.google.appengine.api.images.Image;
此图像没有 blob 键,因为它是从字节数组创建的。将此图像存储为 blob 并获取服务 url 的最简单方法是什么?
URL url = new URL(currentProfile.getProfilePictureUrl());
InputStream input = url.openStream();
byte[] byteArray = IOUtils.toByteArray(input);
Image newImage = ImagesServiceFactory.makeImage(byteArray);
int imageWidth = newImage.getWidth();
int imageHeight = newImage.getHeight();
ImagesService imagesService = ImagesServiceFactory.getImagesService();
float lx = (float)x/(float)imageWidth;
float ty = (float)y/(float)imageHeight;
float rx = (float)x2/(float)imageWidth;
float by = (float)y2/(float)imageHeight;
Transform resize = ImagesServiceFactory.makeCrop(lx, ty, rx, by);
Image transImage = imagesService.applyTransform(resize, newImage);
BlobstoreService blobStoreService = BlobstoreServiceFactory.getBlobstoreService();
//This doesn't work because transImage.getBlobKey() is null
ServingUrlOptions options = ServingUrlOptions.Builder.withBlobKey(transImage.getBlobKey());