* @link https://getkirby.com * @copyright Bastian Allgeier GmbH * @license https://opensource.org/licenses/MIT */ class GdLib extends Darkroom { public function process(string $file, array $options = []): array { $options = $this->preprocess($file, $options); $image = new SimpleImage(); $image->fromFile($file); $image = $this->resize($image, $options); $image = $this->autoOrient($image, $options); $image = $this->blur($image, $options); $image = $this->grayscale($image, $options); $image->toFile($file, null, $options['quality']); return $options; } protected function autoOrient(SimpleImage $image, $options) { if ($options['autoOrient'] === false) { return $image; } return $image->autoOrient(); } protected function resize(SimpleImage $image, array $options) { if ($options['crop'] === false) { return $image->resize($options['width'], $options['height']); } return $image->thumbnail($options['width'], $options['height'] ?? $options['width'], $options['crop']); } protected function blur(SimpleImage $image, array $options) { if ($options['blur'] === false) { return $image; } return $image->blur('gaussian', (int)$options['blur']); } protected function grayscale(SimpleImage $image, array $options) { if ($options['grayscale'] === false) { return $image; } return $image->desaturate(); } }