in services/collage/java/src/main/java/services/CollageService.java [41:88]
public void collage() throws Exception {
// get current Project ID
System.out.println("Project ID = " + projectID);
System.out.println("Thumbnails Bucket = " + thumbnails);
// access collection group in Firestore
Firestore fs = FirestoreOptions.getDefaultInstance().toBuilder()
.setProjectId(projectID)
.setCredentials(GoogleCredentials.getApplicationDefault())
.build().getService();
ApiFuture<QuerySnapshot> query = fs.collectionGroup("pictures")
.whereEqualTo("thumbnail",Boolean.TRUE)
.orderBy("created", Query.Direction.DESCENDING)
.limit(4).get();
List<QueryDocumentSnapshot> documents = query.get().getDocuments();
Storage storage = StorageOptions.newBuilder()
.setProjectId(projectID)
.setCredentials(GoogleCredentials.getApplicationDefault())
.build()
.getService();
// how items did we get
int docSize = documents.size();
// thumbnails downloading
MagickImage[] imagesInfos = new MagickImage[docSize];
System.out.println(String.format("Collage of %d images:", docSize));
for (int pictureIndex = 0 ; pictureIndex < docSize ; pictureIndex++) {
Blob pictureBlob = storage.get(thumbnails, documents.get(pictureIndex).getId());
String pictureName = pictureBlob.getName();
System.out.println(pictureName);
pictureBlob.downloadTo(Paths.get("/tmp/" + pictureName));
ImageInfo imgInfo = new ImageInfo("/tmp/" + pictureName);
imagesInfos[pictureIndex] = new MagickImage(imgInfo);
}
//picture creation from thumbnails
MagickImage collage = new MagickImage(imagesInfos);
ImageInfo imageInfo = new ImageInfo("/tmp/collage.png");
imageInfo.setTile("2x2");
MontageInfo montageInfo = new MontageInfo(imageInfo);
collage.setFileName("/tmp/collage.png");
collage = collage.montageImages(montageInfo);
collage.writeImage(imageInfo);
BlobId blobId = BlobId.of(thumbnails, "collage.png");
BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("image/png").build();
storage.create(blobInfo, Files.readAllBytes(Paths.get("/tmp/collage.png")));
}