false]) { foreach (ImageStyle::loadMultiple(StringUtils::csvToArray($style_names)) as $style_name => $style) { $style->flush(); $this->logger()->success(dt('Image style !style_name flushed', ['!style_name' => $style_name])); } } /** * @hook interact image-flush */ public function interactFlush($input, $output) { $styles = array_keys(ImageStyle::loadMultiple()); $style_names = $input->getArgument('style_names'); if (empty($style_names)) { $styles_all = $styles; array_unshift($styles_all, 'all'); $choices = array_combine($styles_all, $styles_all); $style_names = $this->io()->choice(dt("Choose a style to flush"), $choices, 'all'); if ($style_names == 'all') { $style_names = implode(',', $styles); } $input->setArgument('style_names', $style_names); } } /** * @hook init image-flush */ public function initFlush(InputInterface $input, AnnotationData $annotationData) { // Needed for non-interactive calls. if ($input->getOption('all')) { $styles = array_keys(ImageStyle::loadMultiple()); $input->setArgument('style_names', implode(",", $styles)); } } /** * Create an image derivative. * * @command image:derive * @param $style_name An image style machine name. * @param $source Path to a source image. Optionally prepend stream wrapper scheme. * @usage drush image:derive thumbnail core/themes/bartik/screenshot.png * Save thumbnail sized derivative of logo image. * @validate-file-exists source * @validate-entity-load image_style style_name * @validate-module-enabled image * @aliases id,image-derive */ public function derive($style_name, $source) { $image_style = ImageStyle::load($style_name); $derivative_uri = $image_style->buildUri($source); if ($image_style->createDerivative($source, $derivative_uri)) { return $derivative_uri; } } }