Skip to content

Commit

Permalink
revert mime types for gd + add im comments
Browse files Browse the repository at this point in the history
  • Loading branch information
flokosiol committed Apr 17, 2022
1 parent a2a05e4 commit 5b699da
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 18 deletions.
19 changes: 1 addition & 18 deletions src/Focus/GdLib.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
use Kirby\Image\Image;
use Kirby\Image\Dimensions;
use Kirby\Image\Darkroom;
use Kirby\Toolkit\Mime;

class GdLib extends Darkroom
{
Expand All @@ -22,7 +21,6 @@ class GdLib extends Darkroom
public function process(string $file, array $options = []): array
{
$options = $this->preprocess($file, $options);
$mime = $this->mime($options);

// original image dimension for focus cropping
$originalImage = new Image($file);
Expand All @@ -39,7 +37,7 @@ public function process(string $file, array $options = []): array
$image = $this->blur($image, $options);
$image = $this->grayscale($image, $options);

$image->toFile($file, $mime, $options['quality']);
$image->toFile($file, null, $options['quality']);

return $options;
}
Expand Down Expand Up @@ -115,19 +113,4 @@ protected function grayscale(SimpleImage $image, array $options)

return $image->desaturate();
}

/**
* Returns mime type based on `format` option
*
* @param array $options
* @return string|null
*/
protected function mime(array $options): ?string
{
if ($options['format'] === null) {
return null;
}

return Mime::fromExtension($options['format']);
}
}
97 changes: 97 additions & 0 deletions src/Focus/ImageMagick.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,77 @@
use Kirby\Image\Darkroom;
use Kirby\Toolkit\F;

/**
* ImageMagick
*
* @package Kirby Image
* @author Bastian Allgeier <[email protected]>
* @link https://getkirby.com
* @copyright Bastian Allgeier GmbH
* @license https://opensource.org/licenses/MIT
*/
class ImageMagick extends Darkroom
{
/**
* Activates imagemagick's auto-orient feature unless
* it is deactivated via the options
*
* @param string $file
* @param array $options
* @return string
*/
protected function autoOrient(string $file, array $options)
{
if ($options['autoOrient'] === true) {
return '-auto-orient';
}
}

/**
* Applies the blur settings
*
* @param string $file
* @param array $options
* @return string
*/
protected function blur(string $file, array $options)
{
if ($options['blur'] !== false) {
return '-blur 0x' . $options['blur'];
}
}

/**
* Keep animated gifs
*
* @param string $file
* @param array $options
* @return string
*/
protected function coalesce(string $file, array $options)
{
if (F::extension($file) === 'gif') {
return '-coalesce';
}
}

/**
* Creates the convert command with the right path to the binary file
*
* @param string $file
* @param array $options
* @return string
*/
protected function convert(string $file, array $options): string
{
return sprintf($options['bin'] . ' "%s"', $file);
}

/**
* Returns additional default parameters for imagemagick
*
* @return array
*/
protected function defaults(): array
{
return parent::defaults() + [
Expand All @@ -44,20 +87,44 @@ protected function defaults(): array
];
}

/**
* Applies the correct settings for grayscale images
*
* @param string $file
* @param array $options
* @return string
*/
protected function grayscale(string $file, array $options)
{
if ($options['grayscale'] === true) {
return '-colorspace gray';
}
}

/**
* Applies the correct settings for interlaced JPEGs if
* activated via options
*
* @param string $file
* @param array $options
* @return string
*/
protected function interlace(string $file, array $options)
{
if ($options['interlace'] === true) {
return '-interlace line';
}
}

/**
* Creates and runs the full imagemagick command
* to process the image
*
* @param string $file
* @param array $options
* @return array
* @throws \Exception
*/
public function process(string $file, array $options = []): array
{
$options = $this->preprocess($file, $options);
Expand Down Expand Up @@ -96,11 +163,26 @@ public function process(string $file, array $options = []): array
return $options;
}

/**
* Applies the correct JPEG compression quality settings
*
* @param string $file
* @param array $options
* @return string
*/
protected function quality(string $file, array $options): string
{
return '-quality ' . $options['quality'];
}

/**
* Creates the correct options to crop or resize the image
* and translates the crop positions for imagemagick
*
* @param string $file
* @param array $options
* @return string
*/
protected function resize(string $file, array $options): string
{
// simple resize
Expand Down Expand Up @@ -135,11 +217,26 @@ protected function resize(string $file, array $options): string
return $command;
}

/**
* Makes sure to not process too many images at once
* which could crash the server
*
* @param string $file
* @param array $options
* @return string
*/
protected function save(string $file, array $options): string
{
return sprintf('-limit thread 1 "%s"', $file);
}

/**
* Removes all metadata from the image
*
* @param string $file
* @param array $options
* @return string
*/
protected function strip(string $file, array $options): string
{
return '-strip';
Expand Down

0 comments on commit 5b699da

Please sign in to comment.