diff --git a/README.md b/README.md index 938269fc..b09adc1b 100644 --- a/README.md +++ b/README.md @@ -445,6 +445,27 @@ but most panorama images are large enough that a pyramid will be generated. Note that the `X`, `Y`, and `Z` channels in the raw data are calibration images. While these 3 channels appear first in the .mcd file, `MCDReader` moves them to the end of the channel list for a better viewing experience in OMERO. +Object Storage +============== + +Support for object storage is handled through Java NIO2. +Currently, only the output can be on cloud storage, and `--overwrite` is not supported. + +AWS S3 +------ + +S3 support is provided by [s3fs](https://github.com/lasersonlab/Amazon-S3-FileSystem-NIO2/). +Various parameters can be specified through `--output-options`. + +Google Cloud Storage (GCS) +-------------------------- + +Credentials are handled through [Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials). +The credentials used require read/write access to the bucket. (Minimally, this can be `Storage Object Creator`, +`Storage Object Viewer` and `Storage Object Delete`). + +`--output-options` are *not* currently supported with GCS. + License ======= diff --git a/build.gradle b/build.gradle index a0384f4f..f6c4d97a 100644 --- a/build.gradle +++ b/build.gradle @@ -47,6 +47,7 @@ dependencies { implementation 'javax.xml.bind:jaxb-api:2.3.0' implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.3.14' implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.3.14' + implementation 'com.google.cloud:google-cloud-nio:0.127.26' implementation 'org.openpnp:opencv:4.7.0-0' diff --git a/src/main/java/com/glencoesoftware/bioformats2raw/Converter.java b/src/main/java/com/glencoesoftware/bioformats2raw/Converter.java index f5ddba84..4a299bab 100644 --- a/src/main/java/com/glencoesoftware/bioformats2raw/Converter.java +++ b/src/main/java/com/glencoesoftware/bioformats2raw/Converter.java @@ -128,7 +128,7 @@ public class Converter implements Callable { private volatile Path inputPath; private volatile String outputLocation; - private Map outputOptions; + private Map outputOptions = new HashMap(); private volatile Integer pyramidResolutions; private volatile List seriesList;