ImagineDriver::performManipulation()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 4
ccs 0
cts 3
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace ByTIC\MediaLibrary\Media\Manipulators\Images\Drivers;
4
5
use ByTIC\MediaLibrary\Conversions\Manipulations\Manipulation;
6
use ByTIC\MediaLibrary\Conversions\Manipulations\ManipulationSequence;
7
use Intervention\Image\Image;
8
use Intervention\Image\ImageManager;
9
10
/**
11
 * Class ImagineDriver.
12
 */
13
class ImagineDriver extends AbstractDriver
14
{
15
    /**
16
     * {@inheritdoc}
17
     */
18
    public function manipulate($data, ManipulationSequence $manipulations, $extenstion)
19
    {
20
        $image = $this->makeImage($data);
21
        $this->performManipulations($image, $manipulations);
22
23
        $image->encode($extenstion);
24
25
        return $image->__toString();
26
    }
27
28
    /**
29
     * @param $data
30
     *
31
     * @return Image
32
     */
33 1
    public function makeImage($data)
34
    {
35 1
        $manager = new ImageManager();
36
37 1
        return $manager->make($data);
38
    }
39
40
    /**
41
     * @param Image                $image
42
     * @param ManipulationSequence $manipulations
43
     */
44
    protected function performManipulations($image, $manipulations)
45
    {
46
        foreach ($manipulations as $manipulation) {
47
            $this->performManipulation($image, $manipulation);
48
        }
49
    }
50
51
    /**
52
     * @param Image        $image
53
     * @param Manipulation $manipulation
54
     */
55
    protected function performManipulation($image, $manipulation)
56
    {
57
        $methodName = $manipulation->getName();
58
        $image->{$methodName}(...$manipulation->getAttributes());
59
    }
60
}
61