3 namespace Drupal\image\Plugin\ImageEffect;
5 use Drupal\Component\Utility\Unicode;
6 use Drupal\Core\Form\FormStateInterface;
7 use Drupal\Core\Image\ImageInterface;
8 use Drupal\image\ConfigurableImageEffectBase;
11 * Converts an image resource.
14 * id = "image_convert",
15 * label = @Translation("Convert"),
16 * description = @Translation("Converts an image between extensions (e.g. from PNG to JPEG).")
19 class ConvertImageEffect extends ConfigurableImageEffectBase {
24 public function applyEffect(ImageInterface $image) {
25 if (!$image->convert($this->configuration['extension'])) {
26 $this->logger->error('Image convert failed using the %toolkit toolkit on %path (%mimetype)', ['%toolkit' => $image->getToolkitId(), '%path' => $image->getSource(), '%mimetype' => $image->getMimeType()]);
35 public function getDerivativeExtension($extension) {
36 return $this->configuration['extension'];
42 public function getSummary() {
44 '#markup' => Unicode::strtoupper($this->configuration['extension']),
46 $summary += parent::getSummary();
54 public function defaultConfiguration() {
63 public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
64 $extensions = \Drupal::service('image.toolkit.manager')->getDefaultToolkit()->getSupportedExtensions();
65 $options = array_combine(
67 array_map(['\Drupal\Component\Utility\Unicode', 'strtoupper'], $extensions)
69 $form['extension'] = [
71 '#title' => t('Extension'),
72 '#default_value' => $this->configuration['extension'],
74 '#options' => $options,
82 public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
83 parent::submitConfigurationForm($form, $form_state);
84 $this->configuration['extension'] = $form_state->getValue('extension');