diff --git a/README.md b/README.md
index 5445d4d..85709e2 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ Only tested with gerbers generated by EAGLE.
 Requires node version 10 or higher.
 
 ## Usage
-
+### Save a PNG file
 ```
 const { ImageGenerator } = require('@nplayfair/npe_gerber');
 
@@ -18,7 +18,6 @@ const folderConfig = {
 }
 
 const imageConfig = {
-    // Refer to the sharp documentation for these values
     resizeWidth: 600,
     density: 1000,
     compLevel: 1
@@ -32,4 +31,39 @@ fileProc.gerberToImage(gerberArchive)
       .then(filename => {
         console.log(`Generated image ${filename}`);
       })
-```
\ No newline at end of file
+```
+### Return a PNG stream
+```
+const { ImageGenerator } = require('@nplayfair/npe_gerber');
+
+const folderConfig = {
+    tmpDir: path.join(__dirname, 'tmp'),
+    imgDir: path.join(__dirname, 'img')
+}
+
+const imageConfig = {
+    resizeWidth: 600,
+    density: 1000,
+    compLevel: 1
+}
+
+const gerberArchive = '/path/to/gerber.zip';
+
+const fileProc = new ImageGenerator(folderConfig, imageConfig);
+
+fileProc.gerberToStream(gerberArchive)
+      .then(stream => {
+        // Do something with the stream
+      })
+```
+
+## Image Processing Configuratation
+
+Several values need to be set in the image configuration object. An SVG vector is first created as an intermediate step before being converted to a PNG. These correspond to the parameters passed to [sharp](https://sharp.pixelplumbing.com/) for
+resizing the intermediary SVG and output PNG file. These settings are:
+
+- `resizeWidth`: Width in pixels of the output image.
+- `density`: DPI to create the SVG with. Low values will result in a poor quality output image.
+- `compLevel`: PNG compression level.
+
+More information about these settings can be found in the [sharp](https://sharp.pixelplumbing.com/) documentation.