diff --git a/src/ImageProcessor.Web/NET45/Extensions/DirectoryInfoExtensions.cs b/src/ImageProcessor.Web/NET45/Extensions/DirectoryInfoExtensions.cs
new file mode 100644
index 0000000000..2ec4772579
--- /dev/null
+++ b/src/ImageProcessor.Web/NET45/Extensions/DirectoryInfoExtensions.cs
@@ -0,0 +1,56 @@
+// --------------------------------------------------------------------------------------------------------------------
+//
+// Copyright (c) James South.
+// Licensed under the Apache License, Version 2.0.
+//
+//
+// Provides extension methods to the type.
+//
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace ImageProcessor.Web.Extensions
+{
+ using System.Collections.Generic;
+ using System.IO;
+ using System.Linq;
+
+ ///
+ /// Provides extension methods to the type.
+ ///
+ public static class DirectoryInfoExtensions
+ {
+ ///
+ /// Returns an enumerable collection of directory information that matches a specified search pattern and search subdirectory option.
+ /// Will return an empty enumerable on exception. Quick and dirty but does what I need just now.
+ ///
+ ///
+ /// The that this method extends.
+ ///
+ ///
+ /// The search string to match against the names of directories. This parameter can contain a combination of valid literal path
+ /// and wildcard (* and ?) characters (see Remarks), but doesn't support regular expressions. The default pattern is "*", which returns all files.
+ ///
+ ///
+ /// One of the enumeration values that specifies whether the search operation should include only
+ /// the current directory or all subdirectories. The default value is TopDirectoryOnly.
+ ///
+ ///
+ /// An enumerable collection of directories that matches searchPattern and searchOption.
+ ///
+ public static IEnumerable SafeEnumerateDirectories(this DirectoryInfo directoryInfo, string searchPattern = "*", SearchOption searchOption = SearchOption.TopDirectoryOnly)
+ {
+ IEnumerable directories;
+
+ try
+ {
+ directories = directoryInfo.EnumerateDirectories(searchPattern, searchOption);
+ }
+ catch
+ {
+ return Enumerable.Empty();
+ }
+
+ return directories;
+ }
+ }
+}
diff --git a/src/ImageProcessorConsole/images/output/120430.gif.REMOVED.git-id b/src/ImageProcessorConsole/images/output/120430.gif.REMOVED.git-id
new file mode 100644
index 0000000000..71ce555c11
--- /dev/null
+++ b/src/ImageProcessorConsole/images/output/120430.gif.REMOVED.git-id
@@ -0,0 +1 @@
+30ec5c05548fd350f9b7c699715848b9fbfb8ca9
\ No newline at end of file
diff --git a/src/ImageProcessorConsole/images/output/4.sm.webp b/src/ImageProcessorConsole/images/output/4.sm.webp
new file mode 100644
index 0000000000..90a6308640
Binary files /dev/null and b/src/ImageProcessorConsole/images/output/4.sm.webp differ
diff --git a/src/ImageProcessorConsole/images/output/Tl4Yb.gif.REMOVED.git-id b/src/ImageProcessorConsole/images/output/Tl4Yb.gif.REMOVED.git-id
new file mode 100644
index 0000000000..6515d65a0b
--- /dev/null
+++ b/src/ImageProcessorConsole/images/output/Tl4Yb.gif.REMOVED.git-id
@@ -0,0 +1 @@
+fdc62fc2d056ab885eb9e8fd12b9155ee86d7c43
\ No newline at end of file
diff --git a/src/ImageProcessorConsole/images/output/nLpfllv.gif.REMOVED.git-id b/src/ImageProcessorConsole/images/output/nLpfllv.gif.REMOVED.git-id
new file mode 100644
index 0000000000..c07be0b0ff
--- /dev/null
+++ b/src/ImageProcessorConsole/images/output/nLpfllv.gif.REMOVED.git-id
@@ -0,0 +1 @@
+77cce70db3722920d60f4b17a45a5e390a09838a
\ No newline at end of file
diff --git a/src/ImageProcessorConsole/images/output/test.webp b/src/ImageProcessorConsole/images/output/test.webp
new file mode 100644
index 0000000000..549fb9c6bf
Binary files /dev/null and b/src/ImageProcessorConsole/images/output/test.webp differ