如何从 java 中的 google 云存储中获取图像?
how to get a image from google cloud storage in java?
我有一个小的 js 程序可以将图像上传到我的 gcs 存储桶。如果发生这种情况,我的 gcs 会向 google 应用引擎上的 servlet 发送通知。
到目前为止,还不错。
现在我的 servlet 应该从 gcs 读取并下载刚才上传的文件。然后我想把它解析成一个图像对象并调整图像的大小。新图像应上传到另一个 gcs 存储桶。
为了与 gcs 通信,我使用 gcs 客户端库。
GcsService gcsService = GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
GcsFilename filename = new GcsFilename("bucket_name", "image_name");
GcsInputChannel readChannel = gcsService.openPrefetchingReadChannel(filename, 0, 1024 * 1024);
try ( ObjectInputStream inputStream = new ObjectInputStream(Channels.newInputStream(readChannel))){
inputStream.readObject();
log(inputStream.getClass().getName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我也试过将它保存在一个字节数组中,但错误总是一样
Uncaught exception from servlet
java.io.StreamCorruptedException: invalid stream header: FFD8FFE0
我做错了什么?我忘了什么吗?
感谢您的帮助。
按照建议的价格使用 ImageService:
GcsFilename gcsFilename = new GcsFilename(bucketDefault, objectName);
String filename = String.format("/gs/%s/%s", gcsFilename.getBucketName(), gcsFilename.getObjectName());
String servingUrl = imageService.getServingUrl(ServingUrlOptions.Builder.withGoogleStorageFileName(filename).secureUrl(true));
然后,您可以使用 these parameters 动态转换服务图像。
我有一个小的 js 程序可以将图像上传到我的 gcs 存储桶。如果发生这种情况,我的 gcs 会向 google 应用引擎上的 servlet 发送通知。
到目前为止,还不错。 现在我的 servlet 应该从 gcs 读取并下载刚才上传的文件。然后我想把它解析成一个图像对象并调整图像的大小。新图像应上传到另一个 gcs 存储桶。
为了与 gcs 通信,我使用 gcs 客户端库。
GcsService gcsService = GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
GcsFilename filename = new GcsFilename("bucket_name", "image_name");
GcsInputChannel readChannel = gcsService.openPrefetchingReadChannel(filename, 0, 1024 * 1024);
try ( ObjectInputStream inputStream = new ObjectInputStream(Channels.newInputStream(readChannel))){
inputStream.readObject();
log(inputStream.getClass().getName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我也试过将它保存在一个字节数组中,但错误总是一样
Uncaught exception from servlet java.io.StreamCorruptedException: invalid stream header: FFD8FFE0
我做错了什么?我忘了什么吗? 感谢您的帮助。
按照建议的价格使用 ImageService:
GcsFilename gcsFilename = new GcsFilename(bucketDefault, objectName);
String filename = String.format("/gs/%s/%s", gcsFilename.getBucketName(), gcsFilename.getObjectName());
String servingUrl = imageService.getServingUrl(ServingUrlOptions.Builder.withGoogleStorageFileName(filename).secureUrl(true));
然后,您可以使用 these parameters 动态转换服务图像。