From d22c02464e28720abe4439bd3f05fae27fb68583 Mon Sep 17 00:00:00 2001
From: ADmad
Date: Sun, 28 Jan 2024 20:44:21 +0530
Subject: [PATCH] Add docs for 3.0
---
docs/3.0/api/adjustments.md | 46 +++++++
docs/3.0/api/background.md | 16 +++
docs/3.0/api/border.md | 38 ++++++
docs/3.0/api/colors.md | 159 ++++++++++++++++++++++++
docs/3.0/api/crop.md | 48 +++++++
docs/3.0/api/effects.md | 38 ++++++
docs/3.0/api/encode.md | 27 ++++
docs/3.0/api/flip.md | 16 +++
docs/3.0/api/orientation.md | 16 +++
docs/3.0/api/pixel-density.md | 16 +++
docs/3.0/api/quick-reference.md | 35 ++++++
docs/3.0/api/relative-dimensions.md | 14 +++
docs/3.0/api/size.md | 45 +++++++
docs/3.0/api/watermarks.md | 105 ++++++++++++++++
docs/3.0/changelog.md | 13 ++
docs/3.0/config/advanced-usage.md | 137 ++++++++++++++++++++
docs/3.0/config/defaults-and-presets.md | 92 ++++++++++++++
docs/3.0/config/image-driver.md | 21 ++++
docs/3.0/config/integrations/cakephp.md | 10 ++
docs/3.0/config/integrations/laravel.md | 67 ++++++++++
docs/3.0/config/integrations/psr-7.md | 34 +++++
docs/3.0/config/integrations/slim.md | 29 +++++
docs/3.0/config/integrations/symfony.md | 27 ++++
docs/3.0/config/integrations/zend.md | 27 ++++
docs/3.0/config/responses.md | 44 +++++++
docs/3.0/config/security.md | 73 +++++++++++
docs/3.0/config/setup.md | 99 +++++++++++++++
docs/3.0/config/source-and-cache.md | 117 +++++++++++++++++
docs/3.0/index.md | 38 ++++++
docs/3.0/installation.md | 40 ++++++
docs/3.0/screencasts.md | 11 ++
docs/3.0/simple-example.md | 45 +++++++
docs/_data/menu.yml | 27 ++++
docs/_data/project.yml | 2 +-
34 files changed, 1571 insertions(+), 1 deletion(-)
create mode 100644 docs/3.0/api/adjustments.md
create mode 100644 docs/3.0/api/background.md
create mode 100644 docs/3.0/api/border.md
create mode 100644 docs/3.0/api/colors.md
create mode 100644 docs/3.0/api/crop.md
create mode 100644 docs/3.0/api/effects.md
create mode 100644 docs/3.0/api/encode.md
create mode 100644 docs/3.0/api/flip.md
create mode 100644 docs/3.0/api/orientation.md
create mode 100644 docs/3.0/api/pixel-density.md
create mode 100644 docs/3.0/api/quick-reference.md
create mode 100644 docs/3.0/api/relative-dimensions.md
create mode 100644 docs/3.0/api/size.md
create mode 100644 docs/3.0/api/watermarks.md
create mode 100644 docs/3.0/changelog.md
create mode 100644 docs/3.0/config/advanced-usage.md
create mode 100644 docs/3.0/config/defaults-and-presets.md
create mode 100644 docs/3.0/config/image-driver.md
create mode 100644 docs/3.0/config/integrations/cakephp.md
create mode 100644 docs/3.0/config/integrations/laravel.md
create mode 100644 docs/3.0/config/integrations/psr-7.md
create mode 100644 docs/3.0/config/integrations/slim.md
create mode 100644 docs/3.0/config/integrations/symfony.md
create mode 100644 docs/3.0/config/integrations/zend.md
create mode 100644 docs/3.0/config/responses.md
create mode 100644 docs/3.0/config/security.md
create mode 100644 docs/3.0/config/setup.md
create mode 100644 docs/3.0/config/source-and-cache.md
create mode 100644 docs/3.0/index.md
create mode 100644 docs/3.0/installation.md
create mode 100644 docs/3.0/screencasts.md
create mode 100644 docs/3.0/simple-example.md
diff --git a/docs/3.0/api/adjustments.md b/docs/3.0/api/adjustments.md
new file mode 100644
index 00000000..d23b8953
--- /dev/null
+++ b/docs/3.0/api/adjustments.md
@@ -0,0 +1,46 @@
+---
+layout: default
+title: Adjustments
+---
+
+# Adjustments
+
+## Brightness `bri`
+
+Adjusts the image brightness. Use values between `-100` and `+100`, where `0` represents no change.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&bri=-25)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&bri=-25)
+
+## Contrast `con`
+
+Adjusts the image contrast. Use values between `-100` and `+100`, where `0` represents no change.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&con=25)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&con=25)
+
+## Gamma `gam`
+
+Adjusts the image gamma. Use values between `0.1` and `9.99`.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&gam=1.5)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&gam=1.5)
+
+## Sharpen `sharp`
+
+Sharpen the image. Use values between `0` and `100`.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&sharp=15)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&sharp=15)
\ No newline at end of file
diff --git a/docs/3.0/api/background.md b/docs/3.0/api/background.md
new file mode 100644
index 00000000..970b299e
--- /dev/null
+++ b/docs/3.0/api/background.md
@@ -0,0 +1,16 @@
+---
+layout: default
+title: Background
+---
+
+# Background
+
+## Background `bg`
+
+Sets the background color of the image. See [colors](api/colors/) for more information on the available color formats.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/logo.png?w=400&bg=black)](https://glide.herokuapp.com/1.0/logo.png?w=500&bg=black)
\ No newline at end of file
diff --git a/docs/3.0/api/border.md b/docs/3.0/api/border.md
new file mode 100644
index 00000000..79b3a6d9
--- /dev/null
+++ b/docs/3.0/api/border.md
@@ -0,0 +1,38 @@
+---
+layout: default
+title: Border
+---
+
+# Border
+
+## Border `border`
+
+Add a border to the image. Required format: `width,color,method`.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&border=10,5000,overlay)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&border=10,5000,overlay)
+
+### Width
+
+Sets the border width in pixels, or using [relative dimensions](api/relative-dimensions/).
+
+### Color
+
+Sets the border color. See [colors](api/colors/) for more information on the available color formats.
+
+### Method
+
+Sets how the border will be displayed. Available options:
+
+- `overlay`: Place border on top of image (default).
+- `shrink`: Shrink image within border (canvas does not change).
+- `expand`: Expands canvas to accommodate border.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&border=10,FFCC33,expand)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&border=10,FFCC33,expand)
\ No newline at end of file
diff --git a/docs/3.0/api/colors.md b/docs/3.0/api/colors.md
new file mode 100644
index 00000000..3d0b9b37
--- /dev/null
+++ b/docs/3.0/api/colors.md
@@ -0,0 +1,159 @@
+---
+layout: default
+title: Colors
+---
+
+# Colors
+
+Glide supports a variety of color formats. In addition to the 140 color names supported by all modern browsers (listed below), Glide accepts hexadecimal RGB and RBG alpha formats.
+
+## Hexadecimal
+
+- 3 digit RGB: `CCC`
+- 4 digit ARGB (alpha): `5CCC`
+- 6 digit RGB: `CCCCCC`
+- 8 digit ARGB (alpha): `55CCCCCC`
+
+## Color names
+
+- aliceblue
+- antiquewhite
+- aqua
+- aquamarine
+- azure
+- beige
+- bisque
+- black
+- blanchedalmond
+- blue
+- blueviolet
+- brown
+- burlywood
+- cadetblue
+- chartreuse
+- chocolate
+- coral
+- cornflowerblue
+- cornsilk
+- crimson
+- cyan
+- darkblue
+- darkcyan
+- darkgoldenrod
+- darkgray
+- darkgreen
+- darkkhaki
+- darkmagenta
+- darkolivegreen
+- darkorange
+- darkorchid
+- darkred
+- darksalmon
+- darkseagreen
+- darkslateblue
+- darkslategray
+- darkturquoise
+- darkviolet
+- deeppink
+- deepskyblue
+- dimgray
+- dodgerblue
+- firebrick
+- floralwhite
+- forestgreen
+- fuchsia
+- gainsboro
+- ghostwhite
+- gold
+- goldenrod
+- gray
+- green
+- greenyellow
+- honeydew
+- hotpink
+- indianred
+- indigo
+- ivory
+- khaki
+- lavender
+- lavenderblush
+- lawngreen
+- lemonchiffon
+- lightblue
+- lightcoral
+- lightcyan
+- lightgoldenrodyellow
+- lightgray
+- lightgreen
+- lightpink
+- lightsalmon
+- lightseagreen
+- lightskyblue
+- lightslategray
+- lightsteelblue
+- lightyellow
+- lime
+- limegreen
+- linen
+- magenta
+- maroon
+- mediumaquamarine
+- mediumblue
+- mediumorchid
+- mediumpurple
+- mediumseagreen
+- mediumslateblue
+- mediumspringgreen
+- mediumturquoise
+- mediumvioletred
+- midnightblue
+- mintcream
+- mistyrose
+- moccasin
+- navajowhite
+- navy
+- oldlace
+- olive
+- olivedrab
+- orange
+- orangered
+- orchid
+- palegoldenrod
+- palegreen
+- paleturquoise
+- palevioletred
+- papayawhip
+- peachpuff
+- peru
+- pink
+- plum
+- powderblue
+- purple
+- rebeccapurple
+- red
+- rosybrown
+- royalblue
+- saddlebrown
+- salmon
+- sandybrown
+- seagreen
+- seashell
+- sienna
+- silver
+- skyblue
+- slateblue
+- slategray
+- snow
+- springgreen
+- steelblue
+- tan
+- teal
+- thistle
+- tomato
+- turquoise
+- violet
+- wheat
+- white
+- whitesmoke
+- yellow
+- yellowgreen
\ No newline at end of file
diff --git a/docs/3.0/api/crop.md b/docs/3.0/api/crop.md
new file mode 100644
index 00000000..46abc1f7
--- /dev/null
+++ b/docs/3.0/api/crop.md
@@ -0,0 +1,48 @@
+---
+layout: default
+title: Crop
+---
+
+# Crop
+
+## Fit `fit=crop`
+
+Resizes the image to fill the width and height boundaries and crops any excess image data. The resulting image will match the width and height constraints without distorting the image.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=300&h=300&fit=crop)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=300&h=300&fit=crop)
+
+### Crop Position
+
+You can also set where the image is cropped by adding a crop position. Accepts `crop-top-left`, `crop-top`, `crop-top-right`, `crop-left`, `crop-center`, `crop-right`, `crop-bottom-left`, `crop-bottom` or `crop-bottom-right`. Default is `crop-center`, and is the same as `crop`.
+
+~~~ html
+
+~~~
+
+### Crop Focal Point
+
+In addition to the crop position, you can be more specific about the exact crop position using a focal point. This is defined using two offset percentages: `crop-x%-y%`.
+
+~~~ html
+
+~~~
+
+You may also choose to zoom into your focal point by providing a third value: a float between 1 and 100. Each full step is the equivalent of a 100% zoom. (eg. `x%-y%-2` is the equivalent of viewing the image at 200%). The suggested range is 1-10.
+
+~~~ html
+
+~~~
+
+## Crop `crop`
+
+Crops the image to specific dimensions prior to any other resize operations. Required format: `width,height,x,y`.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?crop=100,100,915,155)](https://glide.herokuapp.com/1.0/kayaks.jpg?crop=100,100,915,155)
\ No newline at end of file
diff --git a/docs/3.0/api/effects.md b/docs/3.0/api/effects.md
new file mode 100644
index 00000000..4c50e475
--- /dev/null
+++ b/docs/3.0/api/effects.md
@@ -0,0 +1,38 @@
+---
+layout: default
+title: Effects
+---
+
+# Effects
+
+## Blur `blur`
+
+Adds a blur effect to the image. Use values between `0` and `100`.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&blur=5)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&blur=5)
+
+Performance intensive on larger amounts of blur with GD driver. Use with care.
+
+## Pixelate `pixel`
+
+Applies a pixelation effect to the image. Use values between `0` and `1000`.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&pixel=5)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&pixel=5)
+
+## Filter `filt`
+
+Applies a filter effect to the image. Accepts `greyscale` or `sepia`.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&filt=sepia)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&filt=sepia)
diff --git a/docs/3.0/api/encode.md b/docs/3.0/api/encode.md
new file mode 100644
index 00000000..e093af5f
--- /dev/null
+++ b/docs/3.0/api/encode.md
@@ -0,0 +1,27 @@
+---
+layout: default
+title: Encode
+---
+
+# Encode
+
+## Quality `q`
+
+Defines the quality of the image. Use values between `0` and `100`. Defaults to `90`. Only relevant if the format is set to `jpg`, `pjpg`, `webp`, `avif` or `heic`.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&q=25)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&q=25)
+
+
+## Format `fm`
+
+Encodes the image to a specific format. Accepts `jpg`, `pjpg` (progressive jpeg), `png`, `gif`, `webp`, `avif` or `heic`. Defaults to `jpg`. `heic` is only supported when using Imagick as driver.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&fm=gif)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&fm=gif)
diff --git a/docs/3.0/api/flip.md b/docs/3.0/api/flip.md
new file mode 100644
index 00000000..2924bd7a
--- /dev/null
+++ b/docs/3.0/api/flip.md
@@ -0,0 +1,16 @@
+---
+layout: default
+title: Flip
+---
+
+# Flip
+
+## Flip `flip`
+
+Flips the image. Accepts `v`, `h` and `both`.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?h=500&flip=v)](https://glide.herokuapp.com/1.0/kayaks.jpg?h=500&flip=v)
diff --git a/docs/3.0/api/orientation.md b/docs/3.0/api/orientation.md
new file mode 100644
index 00000000..63ffef42
--- /dev/null
+++ b/docs/3.0/api/orientation.md
@@ -0,0 +1,16 @@
+---
+layout: default
+title: Orientation
+---
+
+# Orientation
+
+## Orientation `or`
+
+Rotates the image. Accepts `auto`, `0`, `90`, `180` or `270`. Default is `auto`. The `auto` option uses Exif data to automatically orient images correctly.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?h=500&or=90)](https://glide.herokuapp.com/1.0/kayaks.jpg?h=500&or=90)
\ No newline at end of file
diff --git a/docs/3.0/api/pixel-density.md b/docs/3.0/api/pixel-density.md
new file mode 100644
index 00000000..5f24d774
--- /dev/null
+++ b/docs/3.0/api/pixel-density.md
@@ -0,0 +1,16 @@
+---
+layout: default
+title: Pixel Density
+---
+
+# Pixel Density
+
+## Device pixel ratio `dpr`
+
+The device pixel ratio is used to easily convert between CSS pixels and device pixels. This makes it possible to display images at the correct pixel density on a variety of devices such as Apple devices with Retina Displays and Android devices. You must specify either a width, a height, or both for this parameter to work. The default is 1. The maximum value that can be set for dpr is 8.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=250&dpr=2)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=250&dpr=2)
\ No newline at end of file
diff --git a/docs/3.0/api/quick-reference.md b/docs/3.0/api/quick-reference.md
new file mode 100644
index 00000000..50e2f8b1
--- /dev/null
+++ b/docs/3.0/api/quick-reference.md
@@ -0,0 +1,35 @@
+---
+layout: default
+title: Quick reference
+---
+
+# Quick reference
+
+Name | Function | Description |
+------- | ---------------- | ----------- | ----
+Orientation | `or` | Rotates the image. | [info](api/orientation/#orientation-or)
+Flip | `flip` | Flip the image. | [info](api/flip/#flip-flip)
+Crop | `crop` | Crops the image to specific dimensions. | [info](api/crop/#crop-crop)
+Width | `w` | Sets the width of the image, in pixels. | [info](api/size/#width-w)
+Height | `h` | Sets the height of the image, in pixels. | [info](api/size//#height-h)
+Fit | `fit` | Sets how the image is fitted to its target dimensions. | [info](api/size//#fit-fit)
+Device pixel ratio | `dpr` | Multiples the overall image size. | [info](api/pixel-density/#device-pixel-ratio-dpr)
+Brightness | `bri` | Adjusts the image brightness. | [info](api/adjustments/#brightness-bri)
+Contrast | `con` | Adjusts the image contrast. | [info](api/adjustments/#contrast-con)
+Gamma | `gam` | Adjusts the image gamma. | [info](api/adjustments/#gamma-gam)
+Sharpen | `sharp` | Sharpen the image. | [info](api/adjustments/#sharpen-sharp)
+Blur | `blur` | Adds a blur effect to the image. | [info](api/effects/#blur-blur)
+Pixelate | `pixel` | Applies a pixelation effect to the image. | [info](api/effects/#pixelate-pixel)
+Filter | `filt` | Applies a filter effect to the image. | [info](api/effects/#filter-filt)
+Watermark Path | `mark` | Adds a watermark to the image. | [info](api/watermarks/#path-mark)
+Watermark Width | `markw` | Sets the width of the watermark. | [info](api/watermarks/#width-markw)
+Watermark Height | `markh` | Sets the height of the watermark. | [info](api/watermarks/#height-markh)
+Watermark X-offset | `markx` | Sets the watermark distance from left/right edges. | [info](api/watermarks/#x-offset-markx)
+Watermark Y-offset | `marky` | Sets the watermark distance from top/bottom edges. | [info](api/watermarks/#y-offset-marky)
+Watermark Padding | `markpad` | Sets the watermark distance from the edges. | [info](api/watermarks/#padding-markpad)
+Watermark Position | `markpos` | Sets where the watermark is positioned. | [info](api/watermarks/#position-markpos)
+Watermark Alpha | `markalpha` | Sets the watermark opacity. | [info](api/watermarks/#alpha-markalpha)
+Background | `bg` | Sets the background color of the image. | [info](api/background/#background-bg)
+Border | `border` | Add a border to the image. | [info](api/border/#border-border)
+Quality | `q` | Defines the quality of the image. | [info](api/encode/#quality-q)
+Format | `fm` | Encodes the image to a specific format. | [info](api/encode/#format-fm)
diff --git a/docs/3.0/api/relative-dimensions.md b/docs/3.0/api/relative-dimensions.md
new file mode 100644
index 00000000..80182b02
--- /dev/null
+++ b/docs/3.0/api/relative-dimensions.md
@@ -0,0 +1,14 @@
+---
+layout: default
+title: Relative dimensions
+---
+
+# Relative dimensions
+
+Relative dimensions allow you to specify a width or height value as a percentage of the main image. This is helpful for features like watermarks and borders.
+
+To use a relative dimension, simply provide a percentage as a number (between `0` and `100`), followed by a `w` (width) or `h` (height). For example, `5w` represents 5% of the width of the main image.
+
+~~~ html
+
+~~~
\ No newline at end of file
diff --git a/docs/3.0/api/size.md b/docs/3.0/api/size.md
new file mode 100644
index 00000000..462a4fc4
--- /dev/null
+++ b/docs/3.0/api/size.md
@@ -0,0 +1,45 @@
+---
+layout: default
+title: Size
+---
+
+# Size
+
+## Width `w`
+
+Sets the width of the image, in pixels.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500)
+
+## Height `h`
+
+Sets the height of the image, in pixels.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?h=333)](https://glide.herokuapp.com/1.0/kayaks.jpg?h=333)
+
+## Fit `fit`
+
+Sets how the image is fitted to its target dimensions.
+
+### Accepts:
+
+- `contain`: Default. Resizes the image to fit within the width and height boundaries without cropping, distorting or altering the aspect ratio.
+- `max`: Resizes the image to fit within the width and height boundaries without cropping, distorting or altering the aspect ratio, and will also not increase the size of the image if it is smaller than the output size.
+- `fill`: Resizes the image to fit within the width and height boundaries without cropping or distorting the image, and the remaining space is filled with the background color. The resulting image will match the constraining dimensions.
+- `fill-max`: Resizes the image to fit within the width and height boundaries without cropping but upscaling the image if it's smaller. The finished image will have remaining space on either width or height (except if the aspect ratio of the new image is the same as the old image). The remaining space will be filled with the background color. The resulting image will match the constraining dimensions.
+- `stretch`: Stretches the image to fit the constraining dimensions exactly. The resulting image will fill the dimensions, and will not maintain the aspect ratio of the input image.
+- `crop`: Resizes the image to fill the width and height boundaries and crops any excess image data. The resulting image will match the width and height constraints without distorting the image. See the [crop](api/crop/) page for more information.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=300&h=300&fit=stretch)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=300&h=300&fit=stretch)
diff --git a/docs/3.0/api/watermarks.md b/docs/3.0/api/watermarks.md
new file mode 100644
index 00000000..71e93646
--- /dev/null
+++ b/docs/3.0/api/watermarks.md
@@ -0,0 +1,105 @@
+---
+layout: default
+title: Watermarks
+---
+
+# Watermarks
+
+## Path `mark`
+
+Adds a watermark to the image. Must be a path to an image in the watermarks file system, as configured in your server.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&mark=billabong.png&markw=30w&markpad=3w&markpos=top-right)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&mark=billabong.png&markw=30w&markpad=3w&markpos=top-right)
+
+### Configuring the watermarks file system
+
+Configuring the watermarks file system is exactly the same as configuring the `source` and `cache` file systems. See the [source & cache](config/source-and-cache/) for more information about setting up file systems.
+
+~~~ php
+ new Filesystem(new Local('path/to/watermarks/folder')),
+ 'watermarks_path_prefix' => 'images/watermarks', // optional
+]);
+~~~
+
+## Width `markw`
+
+Sets the width of the watermark in pixels, or using [relative dimensions](api/relative-dimensions/).
+
+~~~ html
+
+~~~
+
+## Height `markh`
+
+Sets the height of the watermark in pixels, or using [relative dimensions](api/relative-dimensions/).
+
+~~~ html
+
+~~~
+
+## Fit `markfit`
+
+Sets how the watermark is fitted to its target dimensions.
+
+### Accepts:
+
+- `contain`: Default. Resizes the image to fit within the width and height boundaries without cropping, distorting or altering the aspect ratio.
+- `max`: Resizes the image to fit within the width and height boundaries without cropping, distorting or altering the aspect ratio, and will also not increase the size of the image if it is smaller than the output size.
+- `fill`: Resizes the image to fit within the width and height boundaries without cropping or distorting the image, and the remaining space is filled with the background color. The resulting image will match the constraining dimensions.
+- `stretch`: Stretches the image to fit the constraining dimensions exactly. The resulting image will fill the dimensions, and will not maintain the aspect ratio of the input image.
+- `crop`: Resizes the image to fill the width and height boundaries and crops any excess image data. The resulting image will match the width and height constraints without distorting the image. See the [crop](api/crop/) page for more information.
+
+~~~ html
+
+~~~
+
+## X-offset `markx`
+
+Sets how far the watermark is away from the left and right edges of the image. Set in pixels, or using [relative dimensions](api/relative-dimensions/). Ignored if `markpos` is set to `center`.
+
+~~~ html
+
+~~~
+
+## Y-offset `marky`
+
+Sets how far the watermark is away from the top and bottom edges of the image. Set in pixels, or using [relative dimensions](api/relative-dimensions/). Ignored if `markpos` is set to `center`.
+
+~~~ html
+
+~~~
+
+## Padding `markpad`
+
+Sets how far the watermark is away from edges of the image. Basically a shortcut for using both `markx` and `marky`. Set in pixels, or using [relative dimensions](api/relative-dimensions/). Ignored if `markpos` is set to `center`.
+
+~~~ html
+
+~~~
+
+## Position `markpos`
+
+Sets where the watermark is positioned. Accepts `top-left`, `top`, `top-right`, `left`, `center`, `right`, `bottom-left`, `bottom`, `bottom-right`. Default is `bottom-right`.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&mark=billabong.png&markw=30w&markpad=3w&markpos=top-left)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&mark=billabong.png&markw=30w&markpad=3w&markpos=top-left)
+
+## Alpha `markalpha`
+
+Sets the opacity of the watermark. Use values between `0` and `100`, where `100` is fully opaque, and `0` is fully transparent. The default value is `100`.
+
+~~~ html
+
+~~~
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&mark=billabong.png&markw=94w&markpad=3w&markpos=top-right&markalpha=50)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=500&mark=billabong.png&markw=94w&markpad=3w&markpos=top-right&markalpha=50)
diff --git a/docs/3.0/changelog.md b/docs/3.0/changelog.md
new file mode 100644
index 00000000..68aab49c
--- /dev/null
+++ b/docs/3.0/changelog.md
@@ -0,0 +1,13 @@
+---
+layout: default
+title: Changelog
+---
+
+# Changelog
+
+All notable changes to Glide will be documented in this file.
+
+{% for release in site.github.releases %}
+## [{{ release.name }}]({{ release.html_url }}) - {{ release.published_at | date: "%Y-%m-%d" }}
+{{ release.body | markdownify }}
+{% endfor %}
diff --git a/docs/3.0/config/advanced-usage.md b/docs/3.0/config/advanced-usage.md
new file mode 100644
index 00000000..6553d524
--- /dev/null
+++ b/docs/3.0/config/advanced-usage.md
@@ -0,0 +1,137 @@
+---
+layout: default
+title: Advanced usage
+---
+
+# Advanced usage
+
+Once your Glide [server](/2.0/config/setup/) is configured, there are a number of methods available to interact with it. For basic setups you'll likely only need the `outputImage()` method. However, if you plan to use Glide with a queuing server or in other more complex configurations, these methods can be useful.
+
+## Source
+
+~~~ php
+outputImage($path, array $params);
+
+// Generates and returns the image reponse
+$server->getImageResponse($path, array $params);
+
+// Generates and returns the image Base64 encoded
+$server->getImageAsBase64($path, array $params);
+
+// Generates the image
+$server->makeImage($path, array $params);
+~~~
diff --git a/docs/3.0/config/defaults-and-presets.md b/docs/3.0/config/defaults-and-presets.md
new file mode 100644
index 00000000..0826017d
--- /dev/null
+++ b/docs/3.0/config/defaults-and-presets.md
@@ -0,0 +1,92 @@
+---
+layout: default
+title: Defaults & presets
+---
+
+# Defaults & presets
+
+In certain situations you may want to define default image manipulations. For example, maybe you want to specify that all images are outputted as JPEGs (`fm=jpg`). Or maybe you have a watermark that you want added to all images. Glide makes this possible using default manipulations.
+
+~~~ php
+ [
+ 'mark' => 'logo.png',
+ 'markw' => '30w',
+ 'markpad' => '5w',
+ ]
+]);
+
+// Set using setter method
+$server->setDefaults([
+ 'mark' => 'logo.png',
+ 'markw' => '30w',
+ 'markpad' => '5w',
+]);
+~~~
+
+## Presets
+
+Glide also makes it possible to define groups of defaults, known as presets. This is helpful if you have standard image manipulations that you use throughout your app.
+
+### Configuring presets
+
+~~~ php
+ [
+ 'small' => [
+ 'w' => 200,
+ 'h' => 200,
+ 'fit' => 'crop',
+ ],
+ 'medium' => [
+ 'w' => 600,
+ 'h' => 400,
+ 'fit' => 'crop',
+ ]
+ ]
+]);
+
+// Set using setter method
+$server->setPresets([
+ 'small' => [
+ 'w' => 200,
+ 'h' => 200,
+ 'fit' => 'crop',
+ ],
+ 'medium' => [
+ 'w' => 600,
+ 'h' => 400,
+ 'fit' => 'crop',
+ ]
+]);
+~~~
+
+### Using presets
+
+To use a presets, set it using the `p` parameter:
+
+~~~ html
+
+~~~
+
+It's also possible to use multiple presets together:
+
+~~~ html
+
+~~~
+
+It's even possible to use presets with additional parameters:
+
+~~~ html
+
+~~~
+
+## Overriding defaults and presets
+
+You can override the default and preset manipulations for a specific request by passing a new parameter (e.x. `mark=different.png`), or even disable it entirely by setting it to blank (e.x. `mark=`).
\ No newline at end of file
diff --git a/docs/3.0/config/image-driver.md b/docs/3.0/config/image-driver.md
new file mode 100644
index 00000000..c054f86f
--- /dev/null
+++ b/docs/3.0/config/image-driver.md
@@ -0,0 +1,21 @@
+---
+layout: default
+title: Image driver
+---
+
+# Image driver
+
+By default Glide uses the [GD](http://php.net/manual/en/book.image.php) library. However you can also use Glide with [ImageMagick](http://www.imagemagick.org/) if the [Imagick](http://php.net/manual/en/book.imagick.php) PHP extension is installed.
+
+~~~ php
+ 'gd',
+
+ // Use ImageMagick
+ 'driver' => 'imagick',
+]);
+~~~
\ No newline at end of file
diff --git a/docs/3.0/config/integrations/cakephp.md b/docs/3.0/config/integrations/cakephp.md
new file mode 100644
index 00000000..ff956c89
--- /dev/null
+++ b/docs/3.0/config/integrations/cakephp.md
@@ -0,0 +1,10 @@
+---
+layout: default
+title: CakePHP integration
+---
+
+# CakePHP integration
+
+Since CakePHP supports PSR-7 (since v3.6) and uses Zend Diactoros, you can follow the example shown for [PSR-7](/2.0/config/integrations/psr-7/) integration.
+
+If you want a more advanced integration which included a middleware checkout the [ADmad/cakephp-glide](https://github.com/ADmad/cakephp-glide) plugin.
diff --git a/docs/3.0/config/integrations/laravel.md b/docs/3.0/config/integrations/laravel.md
new file mode 100644
index 00000000..d6c30801
--- /dev/null
+++ b/docs/3.0/config/integrations/laravel.md
@@ -0,0 +1,67 @@
+---
+layout: default
+title: Laravel integration
+---
+
+# Laravel integration
+
+If your application uses the [Laravel](https://laravel.com/) framework, you can use the `LaravelResponseFactory`. Since Laravel uses `HttpFoundation` under the hood, this adapter actually extends the [Symfony adapter](/2.0/config/integrations/symfony/).
+
+This adapter requires Laravel 4 or newer.
+
+## Installation
+
+~~~ bash
+composer require league/glide-laravel
+~~~
+
+## Configuration
+
+~~~ php
+ new LaravelResponseFactory(app('request'))
+]);
+~~~
+
+## Working example
+
+Here is a fully functioning example of how to get Glide up and running with Laravel really quick. First, create a new entry in your routes file:
+
+~~~ php
+where('path', '.*');
+~~~
+
+Next, create a controller that will serve all your Glide images. This will use the default Laravel storage path (`/storage/app`) for the source images.
+
+~~~ php
+ new LaravelResponseFactory(app('request')),
+ 'source' => $filesystem->getDriver(),
+ 'cache' => $filesystem->getDriver(),
+ 'cache_path_prefix' => '.cache',
+ 'base_url' => 'img',
+ ]);
+
+ return $server->getImageResponse($path, request()->except(['expires', 'signature']));
+ }
+}
+~~~
diff --git a/docs/3.0/config/integrations/psr-7.md b/docs/3.0/config/integrations/psr-7.md
new file mode 100644
index 00000000..15edb289
--- /dev/null
+++ b/docs/3.0/config/integrations/psr-7.md
@@ -0,0 +1,34 @@
+---
+layout: default
+title: PSR-7 integration
+---
+
+# PSR-7 integration
+
+Glide ships with the `PsrResponseFactory` class, allowing you to use any [PSR-7](http://www.php-fig.org/psr/psr-7/) compliant library. However, since Glide only depends on the PSR-7 interfaces, it cannot actually create the `Response` or `Stream` objects. Instead, you must provide them.
+
+## Configuration
+
+The following example uses the [Zend Diactoros](https://github.com/zendframework/zend-diactoros) library, but any PSR-7 compatible package will work.
+
+~~~ php
+ new PsrResponseFactory(new Response(), function ($stream) {
+ return new Stream($stream);
+ }),
+]);
+~~~
+
+## Vendor specific adapters
+
+However, for simplicity, Glide provides a vendor specific PSR-7 adapters to make this easier:
+
+- [Slim](/2.0/config/integrations/slim/)
+- [Zend](/2.0/config/integrations/zend/)
\ No newline at end of file
diff --git a/docs/3.0/config/integrations/slim.md b/docs/3.0/config/integrations/slim.md
new file mode 100644
index 00000000..cf6b7f08
--- /dev/null
+++ b/docs/3.0/config/integrations/slim.md
@@ -0,0 +1,29 @@
+---
+layout: default
+title: Slim integration
+---
+
+# Slim integration
+
+If your application uses [Slim](http://www.slimframework.com/) framework, you can use the `SlimResponseFactory`.
+
+This adapter requires Slim 3 or newer, which is based on PSR-7.
+
+## Installation
+
+~~~ bash
+composer require league/glide-slim
+~~~
+
+## Configuration
+
+~~~ php
+ new SlimResponseFactory(),
+]);
+~~~
diff --git a/docs/3.0/config/integrations/symfony.md b/docs/3.0/config/integrations/symfony.md
new file mode 100644
index 00000000..01d5cfa1
--- /dev/null
+++ b/docs/3.0/config/integrations/symfony.md
@@ -0,0 +1,27 @@
+---
+layout: default
+title: Symfony (HttpFoundation) integration
+---
+
+# Symfony integration
+
+If your application uses the [Symfony](https://symfony.com/) framework or anything that uses the `HttpFoundation` library, you can use the `SymfonyResponseFactory`.
+
+## Installation
+
+~~~ bash
+composer require league/glide-symfony
+~~~
+
+## Configuration
+
+~~~ php
+ new SymfonyResponseFactory()
+]);
+~~~
\ No newline at end of file
diff --git a/docs/3.0/config/integrations/zend.md b/docs/3.0/config/integrations/zend.md
new file mode 100644
index 00000000..db7e4433
--- /dev/null
+++ b/docs/3.0/config/integrations/zend.md
@@ -0,0 +1,27 @@
+---
+layout: default
+title: Zend integration
+---
+
+# Zend integration
+
+If your application uses the [Zend Diactoros](https://github.com/zendframework/zend-diactoros) package, for example within the [Zend Expressive](http://framework.zend.com/expressive), you can use the `ZendResponseFactory`.
+
+## Installation
+
+~~~ bash
+composer require league/glide-zend
+~~~
+
+## Configuration
+
+~~~ php
+ new ZendResponseFactory(),
+]);
+~~~
diff --git a/docs/3.0/config/responses.md b/docs/3.0/config/responses.md
new file mode 100644
index 00000000..985db308
--- /dev/null
+++ b/docs/3.0/config/responses.md
@@ -0,0 +1,44 @@
+---
+layout: default
+title: Responses
+---
+
+# Responses
+
+In addition to generating manipulated images, Glide also helps with creating HTTP responses using the `getImageResponse()` method. This is recommended over the `outputImage()` method, since it allows your application to handle the actual output of the image.
+
+However, the type of response object needed depends on your application or framework. For example, you may want a [PSR-7](http://www.php-fig.org/psr/psr-7/) response object if you're using the Slim framework. Or, if you're using Laravel or Symfony, you may want to use an [HttpFoundation](http://symfony.com/doc/current/components/http_foundation/introduction.html) object. To use the `getImageResponse()` method you must configure Glide to return the response you want.
+
+## Response integrations
+
+| Vendor | Message interface | Adapter package |
+|----------------------------------------------|---------------------|----------------------------|
+| [PSR-7](/2.0/config/integrations/psr-7/) | PSR-7 | *Included in base package* |
+| [CakePHP](/2.0/config/integrations/cakephp/) | PSR-7 | *Included in base package* |
+| [Laravel](/2.0/config/integrations/laravel/) | HttpFoundation | league/glide-laravel |
+| [Slim](/2.0/config/integrations/slim/) | PSR-7 | league/glide-slim |
+| [Symfony](/2.0/config/integrations/symfony/) | HttpFoundation | league/glide-symfony |
+| [Zend](/2.0/config/integrations/zend/) | PSR-7 | league/glide-zend |
+
+## Custom responses
+
+If your particular project doesn't use PSR-7 or HttpFoundation, or if you'd like finer control over how your response objects are created, you can use your own response factories. Glide provides the `ResponseFactoryInterface` interface for this.
+
+~~~ php
+It is highly recommended that you use signed URLs in production environments, otherwise your application will be open to mass image-resize attacks.
+
+## Configuration
+
+Start by configuring the Glide server to validate each request before you output the image. In the event that the validation fails, Glide will throw an `SignatureException` exception.
+
+~~~ php
+validateRequest($path, $_GET);
+
+} catch (SignatureException $e) {
+ // Handle error
+}
+~~~
+
+We recommend using a 128 character (or larger) signing key to prevent trivial key attacks. Consider using a package like CryptoKey to generate a secure key.
+
+## Generating secure URLs
+
+Next, generate a signature for each image request you make. Glide comes with a URL builder to make this process easy. Be sure to use the same signing key you configured earlier.
+
+~~~ php
+getUrl('cat.jpg', ['w' => 500]);
+
+// Use the URL in your app
+echo '';
+
+// Prints out
+
+~~~
+
+## Max image size
+
+In addition signing URLs, you can also limit how large images can be generated. The following setting will set the maximum allowed total image size, in pixels.
+
+~~~ php
+ 2000*2000,
+]);
+~~~
+
+Notice that Glide doesn't actually restrict the width or height, but rather the total image size. In the above example it would be `4000000px`. This accomplishes the same thing, while offering more flexibility with your image sizes.
\ No newline at end of file
diff --git a/docs/3.0/config/setup.md b/docs/3.0/config/setup.md
new file mode 100644
index 00000000..f52e2129
--- /dev/null
+++ b/docs/3.0/config/setup.md
@@ -0,0 +1,99 @@
+---
+layout: default
+title: Setup
+---
+
+# Setup
+
+All the Glide configuration is managed through a central object called the `Server`. This includes the image [source location](config/source-and-cache/) (where the original images are saved), the image [cache location](config/source-and-cache/) (where the manipulated images are saved), as well as all other configuration options.
+
+## Setup with factory
+
+The easiest way to configure the `Server` is using the supplied factory.
+
+~~~ php
+ // Source filesystem
+ 'source_path_prefix' => // Source filesystem path prefix
+ 'cache' => // Cache filesystem
+ 'cache_path_prefix' => // Cache filesystem path prefix
+ 'temp_dir' => // Temporary directory where cache EXIF data should be stored
+ // (defaults to sys_get_temp_dir())
+ 'group_cache_in_folders' => // Whether to group cached images in folders
+ 'cache_with_file_extensions' => // Whether to include file extension in cache filename. Default `false`.
+ 'cache_path_callable' => // Custom cache path callable
+ 'watermarks' => // Watermarks filesystem
+ 'watermarks_path_prefix' => // Watermarks filesystem path prefix
+ 'driver' => // Image driver (gd or imagick)
+ 'max_image_size' => // Image size limit
+ 'defaults' => // Default image manipulations
+ 'presets' => // Preset image manipulations
+ 'base_url' => // Base URL of the images
+ 'response' => // Response factory
+]);
+~~~
+
+## Setup manually
+
+You can also choose to instantiate the `Server` object manually. This allows finer control over what dependencies are being used. For example, if you wanted to add additional functionality to the API, you could load custom manipulators in addition to those provided with Glide.
+
+~~~ php
+ 'gd',
+]);
+
+// Set manipulators
+$manipulators = [
+ new League\Glide\Manipulators\Orientation(),
+ new League\Glide\Manipulators\Crop(),
+ new League\Glide\Manipulators\Size(2000*2000),
+ new League\Glide\Manipulators\Brightness(),
+ new League\Glide\Manipulators\Contrast(),
+ new League\Glide\Manipulators\Gamma(),
+ new League\Glide\Manipulators\Sharpen(),
+ new League\Glide\Manipulators\Filter(),
+ new League\Glide\Manipulators\Blur(),
+ new League\Glide\Manipulators\Pixelate(),
+ new League\Glide\Manipulators\Watermark($watermarks),
+ new League\Glide\Manipulators\Background(),
+ new League\Glide\Manipulators\Border(),
+ new League\Glide\Manipulators\Encode(),
+];
+
+// Set API
+$api = new League\Glide\Api\Api($imageManager, $manipulators);
+
+// Setup Glide server
+$server = new League\Glide\Server(
+ $source,
+ $cache,
+ $api,
+);
+
+// Set response factory
+$server->setResponseFactory(new SymfonyResponseFactory());
+~~~
+
+Be sure to always include the League\Glide\Manipulators\Encode()
manipulator as the last item in your list of manipulators. This manipulator is required, and Glide will break without it.
+
+To use the SymfonyResponseFactory
class, you must also include the symfony/http-foundation
package with your project. For more information, see responses.
diff --git a/docs/3.0/config/source-and-cache.md b/docs/3.0/config/source-and-cache.md
new file mode 100644
index 00000000..cf4f1c66
--- /dev/null
+++ b/docs/3.0/config/source-and-cache.md
@@ -0,0 +1,117 @@
+---
+layout: default
+title: Source & cache
+---
+
+# Source & cache
+
+Glide makes it possible to access images stored in a variety of file systems. It does this using the [Flysystem](http://flysystem.thephpleague.com/) file system abstraction library. For example, you may choose to store your source images on [Amazon S3](http://aws.amazon.com/s3/), but keep your rendered images (the cache) on the local disk.
+
+## Setup using Flysystem
+
+To set your source and cache locations, simply pass an instance of `League\Flysystem\Filesystem` for each. See the Flysystem [website](https://flysystem.thephpleague.com/) for a complete list of available adapters.
+
+~~~ php
+ new Filesystem(new LocalFilesystemAdapter('path/to/source/folder')),
+ 'cache' => new Filesystem(new LocalFilesystemAdapter('path/to/cache/folder')),
+]);
+~~~
+
+## Setup using local disk
+
+Alternatively, if you are only using the local disk, you can simply provide the paths as a string.
+
+~~~ php
+ 'path/to/source/folder',
+ 'cache' => 'path/to/cache/folder',
+]);
+~~~
+
+## Set default path prefix
+
+While it's normally possible to set the full source and cache path using Flysystem, there are situations where it may be desirable to set a default path prefix. For example, when only one instance of the `Filesystem` is available.
+
+~~~ php
+ $filesystem,
+ 'cache' => $filesystem,
+ 'source_path_prefix' => 'source',
+ 'cache_path_prefix' => 'cache',
+]);
+
+// Set using setter methods
+$server->setSourcePathPrefix('source');
+$server->setCachePathPrefix('cache');
+~~~
+
+## Set a base URL
+
+It's common to route all images under the path `/img/`. However, since Glide maps the image request path directly to the image source path, you would need to have an `/img/` folder in your source location as well. For example:
+
+~~~ js
+'http://example.com/img/kayaks.jpg' => '/path/to/source/img/kayaks.jpg'
+~~~
+
+The `base_url` allows you to define which part of the URL should be omitted from the source path.
+
+~~~ php
+ '/img/',
+]);
+
+// Set using setter method
+$server->setBaseUrl('/img/');
+~~~
+
+With the base URL configured, the new image source paths will no longer include `/img/`.
+
+~~~ js
+'http://example.com/img/kayaks.jpg' => '/path/to/source/kayaks.jpg'
+~~~
+
+## Disabling the cache
+
+In some situations it may be desirable to disable the cache. For example, you may choose to use a tool like Varnish for caching instead. The best way to do this with Glide is to use an [in-memory adapter](https://flysystem.thephpleague.com/v2/docs/adapter/in-memory/) for Flysystem. This will prevent any cached images from being saved to your local disk.
+
+## Grouping cache in folders
+
+By default Glide groups cached images into folders. For example, all variations of `kayaks.jpg` will be found in a `/path/to/cache/folder/kayaks.jpg` folder. If you'd prefer to have all cached images in the same folder, this can be done in two ways:
+
+~~~ php
+ false
+]);
+
+// Set using setter method
+$server->setGroupCacheInFolders(false);
+~~~
+
+## Deleting cached images
+
+Glide does not automatically purge cached images. However, this can be done by your application using the `deleteCache()` method. Note, grouping cache in folders MUST be enabled in order to delete cached images, which is the default setting.
+
+~~~ php
+deleteCache('kayaks.jpg');
+~~~
diff --git a/docs/3.0/index.md b/docs/3.0/index.md
new file mode 100644
index 00000000..5c256cc4
--- /dev/null
+++ b/docs/3.0/index.md
@@ -0,0 +1,38 @@
+---
+layout: default
+permalink: /
+title: Introduction
+---
+
+# Introduction
+
+[![Author](https://img.shields.io/badge/author-@reinink-blue.svg?style=flat-square)](https://twitter.com/reinink)
+[![Source Code](https://img.shields.io/badge/github-thephpleague/glide-blue.svg?style=flat-square)](https://github.com/thephpleague/glide)
+[![Latest Version](https://img.shields.io/github/release/thephpleague/glide.svg?style=flat-square)](https://github.com/thephpleague/glide/releases)
+[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](https://github.com/thephpleague/glide/blob/master/LICENSE)
+[![Build Status](https://img.shields.io/github/workflow/status/thephpleague/glide/glide/master?style=flat-square)](https://github.com/thephpleague/glide/actions/workflows/test.yaml?query=branch%3Amaster++)
+[![Code Coverage](https://img.shields.io/codecov/c/github/thephpleague/glide/master?style=flat-square)](https://app.codecov.io/gh/thephpleague/glide/)
+[![Total Downloads](https://img.shields.io/packagist/dt/league/glide.svg?style=flat-square)](https://packagist.org/packages/league/glide)
+
+Glide is a wonderfully easy on-demand image manipulation library written in PHP. Its straightforward API is exposed via HTTP, similar to cloud image processing services like [Imgix](http://www.imgix.com/) and [Cloudinary](http://cloudinary.com/). Glide leverages powerful libraries like [Intervention Image](http://image.intervention.io/) (for image handling and manipulation) and [Flysystem](http://flysystem.thephpleague.com/) (for file system abstraction).
+
+[![© Photo Joel Reynolds](https://glide.herokuapp.com/1.0/kayaks.jpg?w=1000&gam=.9&sharp=8)](https://glide.herokuapp.com/1.0/kayaks.jpg?w=1000&gam=.9&sharp=8)
+
+© Photo Joel Reynolds
+
+## Highlights
+
+- Adjust, resize and add effects to images using a simple HTTP based API.
+- Manipulated images are automatically cached and served with far-future expires headers.
+- Create your own image processing server or integrate Glide directly into your app.
+- Supports both the [GD](http://php.net/manual/en/book.image.php) library and the [Imagick](http://php.net/manual/en/book.imagick.php) PHP extension.
+- Supports many response methods, including [PSR-7](http://www.php-fig.org/psr/psr-7/), [HttpFoundation](http://symfony.com/doc/current/components/http_foundation/introduction.html) and more.
+- Ability to secure image URLs using HTTP signatures.
+- Works with many different file systems, thanks to the [Flysystem](http://flysystem.thephpleague.com/) library.
+- Powered by the battle tested [Intervention Image](http://image.intervention.io/) image handling and manipulation library.
+- Framework-agnostic, will work with any project.
+- Composer ready and PSR-2 compliant.
+
+## Questions?
+
+Glide was created by [Jonathan Reinink](https://twitter.com/reinink). Submit issues to [Github](https://github.com/thephpleague/glide/issues).
\ No newline at end of file
diff --git a/docs/3.0/installation.md b/docs/3.0/installation.md
new file mode 100644
index 00000000..26cee465
--- /dev/null
+++ b/docs/3.0/installation.md
@@ -0,0 +1,40 @@
+---
+layout: default
+title: Installation
+---
+
+# Installation
+
+## Using Composer
+
+Glide is available on [Packagist](https://packagist.org/packages/league/glide) and can be installed using [Composer](https://getcomposer.org/). This can be done by running the following command:
+
+~~~ bash
+composer require league/glide
+~~~
+
+Be sure to also include the Composer autoload file in your project:
+
+~~~ php
+See responses for more information about integrating with a specific framework.
+
+## Downloading .zip file
+
+This project is also available for download as a `.zip` file on GitHub. Visit the [releases page](https://github.com/thephpleague/glide/releases), select the version you want, and click the "Source code (zip)" download button.
\ No newline at end of file
diff --git a/docs/3.0/screencasts.md b/docs/3.0/screencasts.md
new file mode 100644
index 00000000..d68df879
--- /dev/null
+++ b/docs/3.0/screencasts.md
@@ -0,0 +1,11 @@
+---
+layout: default
+title: Screencasts
+---
+
+# Screencasts
+
+- Using queues to eager generate images
+- Installing Glide on Laravel 5.1
+- Installing Glide on Slim 3.0
+- Setting up Glide on standalone Heroku server
\ No newline at end of file
diff --git a/docs/3.0/simple-example.md b/docs/3.0/simple-example.md
new file mode 100644
index 00000000..584ebc78
--- /dev/null
+++ b/docs/3.0/simple-example.md
@@ -0,0 +1,45 @@
+---
+layout: default
+title: Simple example
+---
+
+# Simple example
+
+Say you're creating a user profile page that displays a user's name and profile photo. The user has already uploaded an image, but it hasn't been resized. All you have is the original file saved somewhere. The following example illustrates how easy Glide makes cropping and resizing the profile image without having to do any image processing ahead of time.
+
+## In your templates
+
+In your templates simply define how the image will be manipulated. Using Glide's HTTP based API, set the image manipulations in the profile image's `src` attribute.
+
+profile.php
+~~~ php
+=$user->name?>
+
+
+
+~~~
+
+For simplicity this example has omitted HTTP signatures, however in a production environment it's very important to secure your images.
+
+## In your routes
+
+Next, within your routes, setup your Glide server. Configure where the source images can be found, as well as where the manipulated images should be saved (the cache). Finally pass the server the request. It will handle all the image manipulations and will output the image.
+
+routes.php
+~~~ php
+ 'path/to/source/folder',
+ 'cache' => 'path/to/cache/folder',
+]);
+
+// You could manually pass in the image path and manipulations options
+$server->outputImage('users/1.jpg', ['w' => 300, 'h' => 400]);
+
+// But, a better approach is to use information from the request
+$server->outputImage($path, $_GET);
+~~~
+
+While the outputImage()
method works okay, the getImageResponse()
method is recommended. This allows your application to handle the outputting of the manipulated images. This approach does require a little more configuration. See responses for more info.
diff --git a/docs/_data/menu.yml b/docs/_data/menu.yml
index d9fb280f..5aced23a 100644
--- a/docs/_data/menu.yml
+++ b/docs/_data/menu.yml
@@ -1,3 +1,30 @@
+'3.0':
+ Getting Started:
+ Introduction: '/'
+ Changelog: '/3.0/changelog/'
+ Installation: '/3.0/installation/'
+ Simple example: '/3.0/simple-example/'
+ Configuration:
+ Setup: '/3.0/config/setup/'
+ Source & cache: '/3.0/config/source-and-cache/'
+ Security: '/3.0/config/security/'
+ Responses: '/3.0/config/responses/'
+ Image driver: '/3.0/config/image-driver/'
+ Defaults & presets: '/3.0/config/defaults-and-presets/'
+ Advanced usage: '/3.0/config/advanced-usage/'
+ Image API:
+ Quick reference: '/3.0/api/quick-reference/'
+ Orientation: '/3.0/api/orientation/'
+ Flip: '/3.0/api/flip/'
+ Crop: '/3.0/api/crop/'
+ Size: '/3.0/api/size/'
+ Pixel density: '/3.0/api/pixel-density/'
+ Adjustments: '/3.0/api/adjustments/'
+ Effects: '/3.0/api/effects/'
+ Watermarks: '/3.0/api/watermarks/'
+ Background: '/3.0/api/background/'
+ Border: '/3.0/api/border/'
+ Encode: '/3.0/api/encode/'
'2.0':
Getting Started:
Introduction: '/'
diff --git a/docs/_data/project.yml b/docs/_data/project.yml
index a1d87104..4b991079 100644
--- a/docs/_data/project.yml
+++ b/docs/_data/project.yml
@@ -2,4 +2,4 @@ title: Glide
tagline: HTTP based image manipulations
description: Wonderfully easy on-demand image manipulation library with an HTTP based API.
google_analytics_tracking_id: UA-46050814-13
-default_version: "2.0"
+default_version: "3.0"