Skip to content

Commit b54be44

Browse files
committed
Merge branch 'pr-34883' into 2.4-develop-prs
2 parents 455d7d6 + 377c8b5 commit b54be44

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

app/code/Magento/MediaStorage/Model/File/Validator/Image.php

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
use Magento\Framework\File\Mime;
1111
use Magento\Framework\Filesystem\Driver\File;
12+
use Magento\Framework\Image\Factory;
1213

1314
/**
1415
* Image validator
@@ -33,20 +34,28 @@ class Image extends \Zend_Validate_Abstract
3334
*/
3435
private $fileMime;
3536

37+
/**
38+
* @var Factory
39+
*/
40+
private $imageFactory;
41+
3642
/**
3743
* @var File
3844
*/
3945
private $file;
4046

4147
/**
4248
* @param Mime $fileMime
49+
* @param Factory $imageFactory
4350
* @param File $file
4451
*/
4552
public function __construct(
4653
Mime $fileMime,
54+
Factory $imageFactory,
4755
File $file
4856
) {
4957
$this->fileMime = $fileMime;
58+
$this->imageFactory = $imageFactory;
5059
$this->file = $file;
5160
}
5261

@@ -60,10 +69,8 @@ public function isValid($filePath): bool
6069

6170
if (in_array($fileMimeType, $this->imageMimeTypes)) {
6271
try {
63-
//phpcs:ignore Magento2.Functions.DiscouragedFunction
64-
$image = imagecreatefromstring($this->file->fileGetContents($filePath));
65-
66-
$isValid = $image ? true : false;
72+
$image = $this->imageFactory->create($filePath);
73+
$image->open();
6774
} catch (\Exception $e) {
6875
$isValid = false;
6976
}

lib/internal/Magento/Framework/Image/Adapter/ImageMagick.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,15 @@ public function open($filename)
104104
$this->_getFileAttributes();
105105

106106
try {
107-
$this->_imageHandler = new \Imagick($this->_fileName);
107+
if (is_callable('exif_imagetype')) {
108+
$fileType = exif_imagetype($this->_fileName);
109+
110+
if ($fileType === IMAGETYPE_ICO) {
111+
$filename = 'ico:' . $this->_fileName;
112+
}
113+
}
114+
115+
$this->_imageHandler = new \Imagick($filename);
108116
} catch (\ImagickException $e) {
109117
//phpcs:ignore Magento2.Exceptions.DirectThrow
110118
throw new LocalizedException(

0 commit comments

Comments
 (0)