This sample demonstrates how to automatically extract images metadata that are uploaded to Firebase Storage ImageMagick.
See file functions/index.js for the code.
The image metadata is provided using ImagMagick identify
tool which is installed by default on all Cloud Functions instances. This is a CLI for which we use a NodeJS wrapper. The image is first downloaded locally from the Firebase Storage bucket to the tmp
folder using the google-cloud SDK.
The dependencies are listed in functions/package.json.
The function triggers on upload of any file to your Firebase project default Cloud Storage bucket.
Users upload an image to Firebase Storage to the path /<timestamp>/<filename>
and in return the Function will write to the /<timestamp>/<filename>
path in the database. The filename typically contains illegal characters for a Firebase Realtime Database keys (such as .
) so we're replacing all these by the *
character.
For example the metadata for the file at path /1477402116302/mypic.jpg
will be written to the corresponding Database path /1477402116302/mypic*jpg
This sample comes with a Function and web-based UI for testing the function. To configure it:
- Create a Firebase Project using the Firebase Console.
- Enable the Anonymous sign-in in the Auth section.
- Clone or download this repo and open the
exif-image
directory. - You must have the Firebase CLI installed. If you don't have it install it with
npm install -g firebase-tools
and then configure it withfirebase login
. - Configure the CLI locally by using
firebase use --add
and select your project in the list. - Install dependencies locally by running:
cd functions; npm install; cd -
To test the sample:
- Deploy your project using
firebase deploy
- Open the app using
firebase open hosting:site
, this will open a browser. - Upload an image using the Web UI.
- You should see the metadata displayed below after a bit.