Pull request Compare This branch is 1 commit ahead, 67 commits behind Node-8.
Failed to load latest commit information.
functions Adding Cache-Control note Apr 9, 2018
README.md Fix spelling mistake Nov 7, 2017
firebase.json Adding the generate thumbnail sample. Dec 9, 2016


Automatically Generate Thumbnails

This sample demonstrates how to automatically generate thumbnails for each images that are uploaded to Firebase Storage.

Functions Code

See file functions/index.js for the thumbnail generation code.

The thumbnail generation is performed using ImageMagick which is installed by default on all Cloud Functions instances. This is a CLI so we execute the command from node using the child-process-promise package. The image is first downloaded locally from the Firebase Storage bucket to the tmp folder using the google-cloud SDK.

In order to generate a Signed URL, a Service Account Key is required. A Signed URL grants public read or write access to the URL for a specified limited time.

The dependencies are listed in functions/package.json.

Trigger rules

The function triggers on upload of any file to your Firebase project's default Cloud Storage bucket.

Deploy and test

To deploy and test the sample:

  • Create a Firebase project on the Firebase Console and visit the Storage tab.
  • Clone this repo: git clone https://github.com/firebase/functions-samples.
  • Open this sample's directory: cd functions-samples/generate-thumbnail
  • Setup your project by running firebase use --add and select the project you had created.
  • Install dependencies in the functions directory: cd functions; npm install; cd -
  • Go to the Firebase Console, select the gear image > project settings > Service Accounts and click Generate New Private Key to download a Service Account Key JSON document.
  • Add the JSON service account credentials file to the Functions directory as functions/service-account-credentials.json.
  • Deploy your project using firebase deploy
  • Go to the Firebase Console Storage tab and upload an image. After a short time an thumbnail image with the same name but a thumb_ prefix will be created in the same folder (make sure you refresh the UI to see the new file).
  • Go to the Firebase Console Database tab and see that a child of images has been created containing the Signed URLs for both images.