From b250b54d3c3ad1ec4ba357f128efb413e4249944 Mon Sep 17 00:00:00 2001
From: andris-sevcenko <asevcenko@gmail.com>
Date: Wed, 11 Jul 2018 13:54:29 +0300
Subject: [PATCH] Fixed #2408

---
 CHANGELOG-v3.md         |  5 +++++
 src/services/Images.php | 31 ++++++++-----------------------
 2 files changed, 13 insertions(+), 23 deletions(-)

diff --git a/CHANGELOG-v3.md b/CHANGELOG-v3.md
index 8b87b321660..1ab5c709f65 100644
--- a/CHANGELOG-v3.md
+++ b/CHANGELOG-v3.md
@@ -1,5 +1,10 @@
 # Release Notes for Craft CMS 3.x
 
+## Unreleased
+
+### Changed
+- Craft no longer relies on Imagick or GD to tell what image formats they support, when considering if it can manipulate an image. ([#2408](https://github.com/craftcms/cms/issues/2408))
+
 ## 3.0.15 - 2018-07-09
 
 ### Changed
diff --git a/src/services/Images.php b/src/services/Images.php
index 0db14e42d8e..3178a323880 100644
--- a/src/services/Images.php
+++ b/src/services/Images.php
@@ -43,6 +43,13 @@ class Images extends Component
     // Properties
     // =========================================================================
 
+    /**
+     * Image formats that can be manipulated.
+     *
+     * @var array
+     */
+    public $supportedImageFormats = ['jpg', 'jpeg', 'gif', 'png'];
+
     /**
      * Image driver.
      *
@@ -120,29 +127,7 @@ public function getVersion(): string
      */
     public function getSupportedImageFormats(): array
     {
-        if ($this->getIsImagick()) {
-            return array_map('strtolower', Imagick::queryFormats());
-        }
-
-        $output = [];
-        $map = [
-            IMG_JPG => ['jpg', 'jpeg'],
-            IMG_GIF => ['gif'],
-            IMG_PNG => ['png'],
-        ];
-
-        // IMG_WEBP was added in PHP 7.0.10
-        if (defined('IMG_WEBP')) {
-            $map[IMG_WEBP] = ['webp'];
-        }
-
-        foreach ($map as $key => $extensions) {
-            if (imagetypes() & $key) {
-                $output = array_merge($output, $extensions);
-            }
-        }
-
-        return $output;
+        return $this->supportedImageFormats;
     }
 
     /**