DeferedImage   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
dl 0
loc 62
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A MicroImage() 0 21 2
1
<?php
2
3
namespace ilateral\SilverStripe\DeferedImages;
4
5
use SilverStripe\ORM\DataExtension;
6
use SilverStripe\Assets\Image_Backend;
7
use SilverStripe\Core\Config\Configurable;
8
9
class DeferedImage extends DataExtension
10
{
11
    use Configurable;
12
13
    /**
14
     * pixelate level
15
     * 
16
     * @config
17
     * @var integer
18
     */
19
    private static $pixelate = 15;
20
21
    /**
22
     * Amount of blur to apply from 0 to 100
23
     * 
24
     * @config
25
     * @var integer
26
     */
27
    private static $blur = 50;
28
29
    /**
30
     * quality of new image from 0 to 100
31
     * 
32
     * @config
33
     * @var integer
34
     */
35
    private static $quality = 10;
36
37
    /**
38
     * scale of the new image as a percentage
39
     * 
40
     * @config
41
     * @var integer
42
     */
43
    private static $scale = 100;
44
45
    /**
46
     * Generates a reduced quality version of the current image
47
     * @config
48
     * @return void
49
     */
50
    public function MicroImage()
51
    {
52
        $pixel = $this->config()->pixelate;
53
        $blur = $this->config()->blur;
54
        $quality = $this->config()->quality;
55
        $scale = $this->config()->scale;
56
        
57
        $variant = $this->owner->variantName(__FUNCTION__, $pixel, $blur, $quality, $scale);
58
        return $this->owner->manipulateImage(
59
            $variant, 
60
            function (Image_Backend $backend) use ($pixel, $blur, $quality, $scale) {
61
                $clone = clone $backend;
62
                $resource = clone $backend->getImageResource();
63
                $resource->pixelate($pixel)->blur($blur)->encode('jpg', $quality);
64
                if ($scale != 100) {
65
                    $width = $backend->getWidth() * ($scale/100);
66
                    $height = $backend->getHeight() * ($scale/100);
67
                    $resource->resize($width, $height);
68
                }
69
                $clone->setImageResource($resource);
70
                return $clone;
71
            }
72
        );
73
    }
74
}