I'm trying to create a Firebase Function that allows me to pass an array of image URLs in to create generate a montage, upload the file to Firebase Storage and then return the generated Download URL. This will be called from my app, so I'm using functions.https.onCall
.
const functions = require("firebase-functions");
const admin = require('firebase-admin');
var gm = require('gm').subClass({imageMagick: true});
admin.initializeApp();
exports.createMontage = functions.https.onCall((data, context) => {
var storageRef = admin.storage().bucket( 'gs://xyz-zyx.appspot.com' );
var createdMontage = storageRef.file('createdMontage.jpg');
function generateMontage(list){
let g = gm()
list.forEach(function(p){
g.montage(p);
})
g.geometry('+81+81')
g.density(5000,5000)
.write(createdMontage, function(err) {
if(!err) console.log("Written montage image.");
});
return true
}
generateMontage(data)
return createdMontage.getDownloadURL();
});
The function generateMontage()
works locally on NodeJs (with a local write destination).
Thank you.
bucket()
. The first link is dead in the answer. When I clicked through the API and found this: cloud.google.com/storage/docs/samples/storage-upload-file, this 1) doesn't seem to be going throughadmin
and 2) this means that I have to name and upload a file. I'm not sure how to.write(filename)
– Ezra Butlerallow read;
as its storage rule. – Stratubas