Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ImageResizeAfterProductSave.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
13 
15 {
19  private $imageResize;
20 
24  private $state;
25 
31  public function __construct(
32  ImageResize $imageResize,
33  State $state
34  ) {
35  $this->imageResize = $imageResize;
36  $this->state = $state;
37  }
38 
45  public function execute(\Magento\Framework\Event\Observer $observer)
46  {
48  $product = $observer->getEvent()->getProduct();
49 
50  if ($this->state->isAreaCodeEmulated()) {
51  return;
52  }
53 
54  if (!(bool) $product->getId()) {
55  foreach ($product->getMediaGalleryImages() as $image) {
56  $this->imageResize->resizeFromImageName($image->getFile());
57  }
58  } else {
59  $new = $product->getData('media_gallery');
60  $original = $product->getOrigData('media_gallery');
61  $mediaGallery = !empty($new['images']) ? array_column($new['images'], 'file') : [];
62  $mediaOriginalGallery = !empty($original['images']) ? array_column($original['images'], 'file') : [];
63 
64  foreach (array_diff($mediaGallery, $mediaOriginalGallery) as $image) {
65  $this->imageResize->resizeFromImageName($image);
66  }
67  }
68  }
69 }