diff --git a/tools/flags/SkCommonFlags.cpp b/tools/flags/SkCommonFlags.cpp
index e6d269b..2d5a855 100644
--- a/tools/flags/SkCommonFlags.cpp
+++ b/tools/flags/SkCommonFlags.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "SkCommonFlags.h"
-#include "SkOSFile.h"
 
 DEFINE_bool(cpu, true, "master switch for running CPU-bound work.");
 
@@ -15,8 +14,7 @@
 
 DEFINE_bool(gpu, true, "master switch for running GPU-bound work.");
 
-DEFINE_string(images, "", "List of images and/or directories to decode. A directory with no images"
-                          " is treated as a fatal error.");
+DEFINE_string(images, "", "Directory of images to decode.");
 
 DEFINE_string2(match, m, nullptr,
                "[~][^]substring[$] [...] of GM name to run.\n"
@@ -49,46 +47,5 @@
               "Space-separated key/value pairs to add to JSON identifying this builder.");
 DEFINE_string(properties, "",
               "Space-separated key/value pairs to add to JSON identifying this run.");
+
 DEFINE_bool2(pre_log, p, false, "Log before running each test. May be incomprehensible when threading");
-
-bool CollectImages(SkTArray<SkString>* output) {
-    SkASSERT(output);
-
-    static const char* const exts[] = {
-        "bmp", "gif", "jpg", "jpeg", "png", "webp", "ktx", "astc", "wbmp", "ico",
-        "BMP", "GIF", "JPG", "JPEG", "PNG", "WEBP", "KTX", "ASTC", "WBMP", "ICO",
-#ifdef SK_CODEC_DECODES_RAW
-        "arw", "cr2", "dng", "nef", "nrw", "orf", "raf", "rw2", "pef", "srw",
-        "ARW", "CR2", "DNG", "NEF", "NRW", "ORF", "RAF", "RW2", "PEF", "SRW",
-#endif
-    };
-
-    for (int i = 0; i < FLAGS_images.count(); ++i) {
-        const char* flag = FLAGS_images[i];
-        if (!sk_exists(flag)) {
-            SkDebugf("%s does not exist!\n", flag);
-            return false;
-        }
-
-        if (sk_isdir(flag)) {
-            // If the value passed in is a directory, add all the images
-            bool foundAnImage = false;
-            for (const char* ext : exts) {
-                SkOSFile::Iter it(flag, ext);
-                SkString file;
-                while (it.next(&file)) {
-                    foundAnImage = true;
-                    output->push_back() = SkOSPath::Join(flag, file.c_str());
-                }
-            }
-            if (!foundAnImage) {
-                SkDebugf("No supported images found in %s!\n", flag);
-                return false;
-            }
-        } else {
-            // Also add the value if it is a single image
-            output->push_back() = flag;
-        }
-    }
-    return true;
-}
