GdImageReader   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 27
rs 10
c 0
b 0
f 0
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A supports() 0 9 2
A extract() 0 14 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Damax\Media\Metadata;
6
7
use Damax\Common\Domain\Model\Metadata;
8
use Damax\Media\Domain\Metadata\Reader;
9
10
final class GdImageReader implements Reader
11
{
12
    public function supports($context): bool
13
    {
14
        if (!extension_loaded('gd')) {
15
            // @codeCoverageIgnoreStart
16
            return false;
17
            // @codeCoverageIgnoreEnd
18
        }
19
20
        return 0 === strpos($context['mime_type'] ?? 'plain/text', 'image/');
21
    }
22
23
    public function extract($context): Metadata
24
    {
25
        rewind($context['stream']);
26
27
        $image = imagecreatefromstring(stream_get_contents($context['stream']));
28
29
        $data = [
30
            'width' => imagesx($image),
31
            'height' => imagesy($image),
32
        ];
33
34
        imagedestroy($image);
35
36
        return Metadata::fromArray($data);
37
    }
38
}
39