Test Failed
Push — master ( 9d3a5c...c5f273 )
by Sebastian
08:26
created
src/HSVColor.php 1 patch
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -33,9 +33,9 @@
 block discarded – undo
33 33
     private BrightnessChannel $brightness;
34 34
     private ColorChannel $alpha;
35 35
 
36
-    public function __construct(HueChannel $hue, SaturationChannel $saturation, BrightnessChannel $brightness, ?ColorChannel $alpha=null)
36
+    public function __construct(HueChannel $hue, SaturationChannel $saturation, BrightnessChannel $brightness, ?ColorChannel $alpha = null)
37 37
     {
38
-        if($alpha === null) {
38
+        if ($alpha === null) {
39 39
             $alpha = ColorChannel::alpha(0);
40 40
         }
41 41
 
Please login to merge, or discard this patch.
src/ImageHelper.php 1 patch
Indentation   +213 added lines, -213 removed lines patch added patch discarded remove patch
@@ -73,13 +73,13 @@  discard block
 block discarded – undo
73 73
     protected array $colors = array();
74 74
 
75 75
     /**
76
-    * @var resource|NULL
77
-    */
76
+     * @var resource|NULL
77
+     */
78 78
     protected $newImage;
79 79
 
80
-   /**
81
-    * @var resource
82
-    */
80
+    /**
81
+     * @var resource
82
+     */
83 83
     protected $sourceImage;
84 84
 
85 85
     /**
@@ -188,17 +188,17 @@  discard block
 block discarded – undo
188 188
         }
189 189
     }
190 190
 
191
-   /**
192
-    * Factory method: creates a new helper with a blank image.
193
-    * 
194
-    * @param integer $width
195
-    * @param integer $height
196
-    * @param string $type The target file type when saving
197
-    * @return ImageHelper
198
-    * @throws ImageHelper_Exception
199
-    *
200
-    * @see ImageHelper::ERROR_CANNOT_CREATE_IMAGE_OBJECT
201
-    */
191
+    /**
192
+     * Factory method: creates a new helper with a blank image.
193
+     * 
194
+     * @param integer $width
195
+     * @param integer $height
196
+     * @param string $type The target file type when saving
197
+     * @return ImageHelper
198
+     * @throws ImageHelper_Exception
199
+     *
200
+     * @see ImageHelper::ERROR_CANNOT_CREATE_IMAGE_OBJECT
201
+     */
202 202
     public static function createNew(int $width, int $height, string $type='png') : self
203 203
     {
204 204
         $img = imagecreatetruecolor($width, $height);
@@ -249,17 +249,17 @@  discard block
 block discarded – undo
249 249
         return new ImageHelper($file, null, self::getFileImageType($file));
250 250
     }
251 251
     
252
-   /**
253
-    * Sets a global image helper configuration value. Available
254
-    * configuration settings are:
255
-    * 
256
-    * <ul>
257
-    * <li><code>auto-memory-adjustment</code> <i>boolean</i> Whether to try and adjust the memory limit automatically so there will be enough to load/process the target image.</li>
258
-    * </ul>
259
-    * 
260
-    * @param string $name
261
-    * @param mixed|NULL $value
262
-    */
252
+    /**
253
+     * Sets a global image helper configuration value. Available
254
+     * configuration settings are:
255
+     * 
256
+     * <ul>
257
+     * <li><code>auto-memory-adjustment</code> <i>boolean</i> Whether to try and adjust the memory limit automatically so there will be enough to load/process the target image.</li>
258
+     * </ul>
259
+     * 
260
+     * @param string $name
261
+     * @param mixed|NULL $value
262
+     */
263 263
     public static function setConfig(string $name, $value) : void
264 264
     {
265 265
         if(isset(self::$config[$name])) {
@@ -267,13 +267,13 @@  discard block
 block discarded – undo
267 267
         }
268 268
     }
269 269
 
270
-   /**
271
-    * Shorthand for setting the automatic memory adjustment
272
-    * global configuration setting.
273
-    *
274
-    * @param bool $enabled
275
-    * @return void
276
-    */
270
+    /**
271
+     * Shorthand for setting the automatic memory adjustment
272
+     * global configuration setting.
273
+     *
274
+     * @param bool $enabled
275
+     * @return void
276
+     */
277 277
     public static function setAutoMemoryAdjustment(bool $enabled=true) : void
278 278
     {
279 279
         self::setConfig('auto-memory-adjustment', $enabled);
@@ -747,12 +747,12 @@  discard block
 block discarded – undo
747 747
         return $this;
748 748
     }
749 749
 
750
-   /**
751
-    * Attempts to adjust the memory to the required size
752
-    * to work with the current image.
753
-    * 
754
-    * @return boolean
755
-    */
750
+    /**
751
+     * Attempts to adjust the memory to the required size
752
+     * to work with the current image.
753
+     * 
754
+     * @return boolean
755
+     */
756 756
     protected function adjustMemory() : bool
757 757
     {
758 758
         if(!self::$config['auto-memory-adjustment']) {
@@ -805,15 +805,15 @@  discard block
 block discarded – undo
805 805
         return $this->resampleImage($width, $height);
806 806
     }
807 807
 
808
-   /**
809
-    * Creates a new image from the current image,
810
-    * resampling it to the new size.
811
-    * 
812
-    * @param int $newWidth
813
-    * @param int $newHeight   
814
-    * @throws ImageHelper_Exception
815
-    * @return ImageHelper
816
-    */
808
+    /**
809
+     * Creates a new image from the current image,
810
+     * resampling it to the new size.
811
+     * 
812
+     * @param int $newWidth
813
+     * @param int $newHeight   
814
+     * @throws ImageHelper_Exception
815
+     * @return ImageHelper
816
+     */
817 817
     protected function resampleImage(int $newWidth, int $newHeight) : ImageHelper
818 818
     {
819 819
         if($this->isVector()) {
@@ -885,17 +885,17 @@  discard block
 block discarded – undo
885 885
         return array_unique($types);
886 886
     }
887 887
     
888
-   /**
889
-    * Displays an existing image resource.
890
-    *
891
-    * @param resource $resource
892
-    * @param string $imageType The image format to send, i.e. "jpeg", "png"
893
-    * @param int $quality The quality to use for the image. This is 0-9 (0=no compression, 9=max) for PNG, and 0-100 (0=lowest, 100=highest quality) for JPG
894
-    *
895
-    * @throws ImageHelper_Exception
896
-    * @see ImageHelper::ERROR_NOT_A_RESOURCE
897
-    * @see ImageHelper::ERROR_INVALID_STREAM_IMAGE_TYPE
898
-    */
888
+    /**
889
+     * Displays an existing image resource.
890
+     *
891
+     * @param resource $resource
892
+     * @param string $imageType The image format to send, i.e. "jpeg", "png"
893
+     * @param int $quality The quality to use for the image. This is 0-9 (0=no compression, 9=max) for PNG, and 0-100 (0=lowest, 100=highest quality) for JPG
894
+     *
895
+     * @throws ImageHelper_Exception
896
+     * @see ImageHelper::ERROR_NOT_A_RESOURCE
897
+     * @see ImageHelper::ERROR_INVALID_STREAM_IMAGE_TYPE
898
+     */
899 899
     public static function displayImageStream($resource, string $imageType, int $quality=-1) : void
900 900
     {
901 901
         self::requireResource($resource);
@@ -979,11 +979,11 @@  discard block
 block discarded – undo
979 979
         readfile($imageFile);
980 980
     }
981 981
     
982
-   /**
983
-    * Displays the current image.
984
-    *
985
-    * NOTE: You must call `exit()` manually after this.
986
-    */
982
+    /**
983
+     * Displays the current image.
984
+     *
985
+     * NOTE: You must call `exit()` manually after this.
986
+     */
987 987
     public function display() : void
988 988
     {
989 989
         self::displayImageStream(
@@ -1097,14 +1097,14 @@  discard block
 block discarded – undo
1097 1097
         return $this;
1098 1098
     }
1099 1099
     
1100
-   /**
1101
-    * Requires the subject to be a resource.
1102
-    * 
1103
-    * @param resource|GdImage|mixed $subject
1104
-    *
1105
-    * @throws ImageHelper_Exception
1106
-    * @see ImageHelper::ERROR_NOT_A_RESOURCE
1107
-    */
1100
+    /**
1101
+     * Requires the subject to be a resource.
1102
+     * 
1103
+     * @param resource|GdImage|mixed $subject
1104
+     *
1105
+     * @throws ImageHelper_Exception
1106
+     * @see ImageHelper::ERROR_NOT_A_RESOURCE
1107
+     */
1108 1108
     public static function requireResource($subject) : void
1109 1109
     {
1110 1110
         if(is_resource($subject) && imagesx($subject)) {
@@ -1125,14 +1125,14 @@  discard block
 block discarded – undo
1125 1125
         );
1126 1126
     }
1127 1127
     
1128
-   /**
1129
-    * Creates a new image resource, with transparent background.
1130
-    * 
1131
-    * @param int $width
1132
-    * @param int $height
1133
-    * @throws ImageHelper_Exception
1134
-    * @return resource
1135
-    */
1128
+    /**
1129
+     * Creates a new image resource, with transparent background.
1130
+     * 
1131
+     * @param int $width
1132
+     * @param int $height
1133
+     * @throws ImageHelper_Exception
1134
+     * @return resource
1135
+     */
1136 1136
     public function createNewImage(int $width, int $height)
1137 1137
     {
1138 1138
         $img = imagecreatetruecolor($width, $height);
@@ -1156,38 +1156,38 @@  discard block
 block discarded – undo
1156 1156
      * @param int $y
1157 1157
      * @return $this
1158 1158
      */
1159
-	public function fillWhite(int $x=0, int $y=0) : self
1160
-	{
1161
-	    $this->addRGBColor('white', 255, 255, 255);
1159
+    public function fillWhite(int $x=0, int $y=0) : self
1160
+    {
1161
+        $this->addRGBColor('white', 255, 255, 255);
1162 1162
         return $this->fill('white', $x, $y);
1163
-	}
1163
+    }
1164 1164
 
1165 1165
     /**
1166 1166
      * @return $this
1167 1167
      * @throws ImageHelper_Exception
1168 1168
      */
1169
-	public function fillTransparent() : self
1170
-	{
1169
+    public function fillTransparent() : self
1170
+    {
1171 1171
         $this->enableAlpha();
1172 1172
 	    
1173
-	    self::fillImageTransparent($this->newImage);
1173
+        self::fillImageTransparent($this->newImage);
1174 1174
 	    
1175
-	    return $this;
1176
-	}
1175
+        return $this;
1176
+    }
1177 1177
 
1178 1178
     /**
1179 1179
      * @param resource $resource
1180 1180
      * @return void
1181 1181
      * @throws ImageHelper_Exception
1182 1182
      */
1183
-	public static function fillImageTransparent($resource) : void
1184
-	{
1185
-	    self::requireResource($resource);
1183
+    public static function fillImageTransparent($resource) : void
1184
+    {
1185
+        self::requireResource($resource);
1186 1186
 	    
1187
-	    $transparent = imagecolorallocatealpha($resource, 89, 14, 207, 127);
1188
-	    imagecolortransparent ($resource, $transparent);
1189
-	    imagefill($resource, 0, 0, $transparent);
1190
-	}
1187
+        $transparent = imagecolorallocatealpha($resource, 89, 14, 207, 127);
1188
+        imagecolortransparent ($resource, $transparent);
1189
+        imagefill($resource, 0, 0, $transparent);
1190
+    }
1191 1191
 
1192 1192
     /**
1193 1193
      * @param string $colorName
@@ -1195,11 +1195,11 @@  discard block
 block discarded – undo
1195 1195
      * @param int $y
1196 1196
      * @return $this
1197 1197
      */
1198
-	public function fill(string $colorName, int $x=0, int $y=0) : self
1199
-	{
1200
-	    imagefill($this->newImage, $x, $y, $this->colors[$colorName]);
1201
-	    return $this;
1202
-	}
1198
+    public function fill(string $colorName, int $x=0, int $y=0) : self
1199
+    {
1200
+        imagefill($this->newImage, $x, $y, $this->colors[$colorName]);
1201
+        return $this;
1202
+    }
1203 1203
 
1204 1204
     /**
1205 1205
      * @param string $name
@@ -1243,9 +1243,9 @@  discard block
 block discarded – undo
1243 1243
         return $this;
1244 1244
     }
1245 1245
     
1246
-   /**
1247
-    * @return resource
1248
-    */
1246
+    /**
1247
+     * @return resource
1248
+     */
1249 1249
     public function getImage()
1250 1250
     {
1251 1251
         return $this->newImage;
@@ -1293,17 +1293,17 @@  discard block
 block discarded – undo
1293 1293
      *
1294 1294
      * @see ImageHelper::ERROR_CANNOT_GET_IMAGE_SIZE
1295 1295
      */
1296
-	public function getSize() : ImageHelper_Size
1296
+    public function getSize() : ImageHelper_Size
1297 1297
     {
1298
-	    return self::getImageSize($this->newImage);
1298
+        return self::getImageSize($this->newImage);
1299 1299
     }
1300 1300
     
1301
-   /**
1302
-    * Sets the TTF font file to use for text operations.
1303
-    * 
1304
-    * @param string $filePath
1305
-    * @return $this
1306
-    */
1301
+    /**
1302
+     * Sets the TTF font file to use for text operations.
1303
+     * 
1304
+     * @param string $filePath
1305
+     * @return $this
1306
+     */
1307 1307
     public function setFontTTF(string $filePath) : self
1308 1308
     {
1309 1309
         $this->TTFFile = $filePath;
@@ -1381,7 +1381,7 @@  discard block
 block discarded – undo
1381 1381
             return;
1382 1382
         }
1383 1383
         
1384
-	    throw new ImageHelper_Exception(
1384
+        throw new ImageHelper_Exception(
1385 1385
             'No true type font specified',
1386 1386
             'This functionality requires a TTF font file to be specified with the [setFontTTF] method.',
1387 1387
             self::ERROR_NO_TRUE_TYPE_FONT_SET    
@@ -1404,37 +1404,37 @@  discard block
 block discarded – undo
1404 1404
      * @see ImageHelper::ERROR_SVG_SOURCE_VIEWBOX_MISSING
1405 1405
      * @see ImageHelper::ERROR_SVG_VIEWBOX_INVALID
1406 1406
      */
1407
-	public static function getImageSize($pathOrResource) : ImageHelper_Size
1408
-	{
1409
-	    if(is_resource($pathOrResource) || $pathOrResource instanceof GdImage)
1410
-	    {
1411
-	        return new ImageHelper_Size(array(
1412
-	            'width' => imagesx($pathOrResource),
1413
-	            'height' => imagesy($pathOrResource),
1414
-	            'channels' => 1,
1415
-	            'bits' => 8
1416
-	        ));
1417
-	    }
1407
+    public static function getImageSize($pathOrResource) : ImageHelper_Size
1408
+    {
1409
+        if(is_resource($pathOrResource) || $pathOrResource instanceof GdImage)
1410
+        {
1411
+            return new ImageHelper_Size(array(
1412
+                'width' => imagesx($pathOrResource),
1413
+                'height' => imagesy($pathOrResource),
1414
+                'channels' => 1,
1415
+                'bits' => 8
1416
+            ));
1417
+        }
1418 1418
 
1419
-	    $type = self::getFileImageType($pathOrResource);
1419
+        $type = self::getFileImageType($pathOrResource);
1420 1420
 
1421 1421
         $sizeMethods = array(
1422 1422
             'svg' => array(self::class, 'getImageSize_svg')
1423 1423
         );
1424 1424
 
1425
-	    if(isset($sizeMethods[$type]))
1426
-	    {
1427
-	        return ClassHelper::requireObjectInstanceOf(
1425
+        if(isset($sizeMethods[$type]))
1426
+        {
1427
+            return ClassHelper::requireObjectInstanceOf(
1428 1428
                 ImageHelper_Size::class,
1429 1429
                 $sizeMethods[$type]($pathOrResource)
1430 1430
             );
1431
-	    }
1431
+        }
1432 1432
 
1433
-	    $info = getimagesize($pathOrResource);
1433
+        $info = getimagesize($pathOrResource);
1434 1434
 
1435
-	    if($info !== false) {
1436
-	        return new ImageHelper_Size($info);
1437
-	    }
1435
+        if($info !== false) {
1436
+            return new ImageHelper_Size($info);
1437
+        }
1438 1438
 	    
1439 1439
         throw new ImageHelper_Exception(
1440 1440
             'Error opening image file',
@@ -1444,7 +1444,7 @@  discard block
 block discarded – undo
1444 1444
             ),
1445 1445
             self::ERROR_CANNOT_GET_IMAGE_SIZE
1446 1446
         );
1447
-	}
1447
+    }
1448 1448
 
1449 1449
     /**
1450 1450
      * @param string $imagePath
@@ -1454,78 +1454,78 @@  discard block
 block discarded – undo
1454 1454
      * @throws XMLHelper_Exception
1455 1455
      * @throws JsonException
1456 1456
      */
1457
-	protected static function getImageSize_svg(string $imagePath) : ImageHelper_Size
1458
-	{
1459
-	    $xml = XMLHelper::createSimplexml();
1460
-	    $xml->loadFile($imagePath);
1457
+    protected static function getImageSize_svg(string $imagePath) : ImageHelper_Size
1458
+    {
1459
+        $xml = XMLHelper::createSimplexml();
1460
+        $xml->loadFile($imagePath);
1461 1461
 	    
1462
-	    if($xml->hasErrors()) {
1463
-	        throw new ImageHelper_Exception(
1464
-	            'Error opening SVG image',
1465
-	            sprintf(
1466
-	                'The XML content of the image [%s] could not be parsed.',
1467
-	                $imagePath
1462
+        if($xml->hasErrors()) {
1463
+            throw new ImageHelper_Exception(
1464
+                'Error opening SVG image',
1465
+                sprintf(
1466
+                    'The XML content of the image [%s] could not be parsed.',
1467
+                    $imagePath
1468 1468
                 ),
1469
-	            self::ERROR_CANNOT_READ_SVG_IMAGE
1469
+                self::ERROR_CANNOT_READ_SVG_IMAGE
1470 1470
             );
1471
-	    }
1471
+        }
1472 1472
 	    
1473
-	    $data = $xml->toArray();
1474
-	    $xml->dispose();
1475
-	    unset($xml);
1473
+        $data = $xml->toArray();
1474
+        $xml->dispose();
1475
+        unset($xml);
1476 1476
 	    
1477
-	    if(!isset($data['@attributes']['viewBox'])) {
1478
-	        throw new ImageHelper_Exception(
1479
-	            'SVG Image is corrupted',
1480
-	            sprintf(
1481
-	                'The [viewBox] attribute is missing in the XML of the image at path [%s].',
1482
-	                $imagePath
1477
+        if(!isset($data['@attributes']['viewBox'])) {
1478
+            throw new ImageHelper_Exception(
1479
+                'SVG Image is corrupted',
1480
+                sprintf(
1481
+                    'The [viewBox] attribute is missing in the XML of the image at path [%s].',
1482
+                    $imagePath
1483 1483
                 ),
1484
-	            self::ERROR_SVG_SOURCE_VIEWBOX_MISSING
1484
+                self::ERROR_SVG_SOURCE_VIEWBOX_MISSING
1485 1485
             );
1486
-	    }
1486
+        }
1487 1487
 	    
1488
-	    $svgWidth = parseNumber($data['@attributes']['width'])->getNumber();
1489
-	    $svgHeight = parseNumber($data['@attributes']['height'])->getNumber();
1488
+        $svgWidth = parseNumber($data['@attributes']['width'])->getNumber();
1489
+        $svgHeight = parseNumber($data['@attributes']['height'])->getNumber();
1490 1490
 	    
1491
-	    $viewBox = str_replace(' ', ',', $data['@attributes']['viewBox']);
1492
-	    $size = explode(',', $viewBox);
1491
+        $viewBox = str_replace(' ', ',', $data['@attributes']['viewBox']);
1492
+        $size = explode(',', $viewBox);
1493 1493
 	    
1494
-	    if(count($size) !== 4)
1495
-	    {
1496
-	        throw new ImageHelper_Exception(
1497
-	            'SVG image has an invalid viewBox attribute',
1498
-	            sprintf(
1499
-	               'The [viewBox] attribute does not have an expected value: [%s] in path [%s].',
1500
-	                $viewBox,
1501
-	                $imagePath
1494
+        if(count($size) !== 4)
1495
+        {
1496
+            throw new ImageHelper_Exception(
1497
+                'SVG image has an invalid viewBox attribute',
1498
+                sprintf(
1499
+                    'The [viewBox] attribute does not have an expected value: [%s] in path [%s].',
1500
+                    $viewBox,
1501
+                    $imagePath
1502 1502
                 ),
1503
-	            self::ERROR_SVG_VIEWBOX_INVALID
1503
+                self::ERROR_SVG_VIEWBOX_INVALID
1504 1504
             );
1505
-	    }
1505
+        }
1506 1506
 	    
1507
-	    $boxWidth = (float)$size[2];
1508
-	    $boxHeight = (float)$size[3];
1507
+        $boxWidth = (float)$size[2];
1508
+        $boxHeight = (float)$size[3];
1509 1509
 	    
1510
-	    // calculate the x and y units of the document: 
1511
-	    // @see http://tutorials.jenkov.com/svg/svg-viewport-view-box.html#viewbox
1512
-	    //
1513
-	    // The viewbox combined with the width and height of the svg
1514
-	    // allow calculating how many pixels are in one unit of the 
1515
-	    // width and height of the document.
1510
+        // calculate the x and y units of the document: 
1511
+        // @see http://tutorials.jenkov.com/svg/svg-viewport-view-box.html#viewbox
1516 1512
         //
1517
-	    $xUnits = $svgWidth / $boxWidth;
1518
-	    $yUnits = $svgHeight / $boxHeight;
1513
+        // The viewbox combined with the width and height of the svg
1514
+        // allow calculating how many pixels are in one unit of the 
1515
+        // width and height of the document.
1516
+        //
1517
+        $xUnits = $svgWidth / $boxWidth;
1518
+        $yUnits = $svgHeight / $boxHeight;
1519 1519
 	    
1520
-	    $pxWidth = $xUnits * $svgWidth;
1521
-	    $pxHeight = $yUnits * $svgHeight;
1520
+        $pxWidth = $xUnits * $svgWidth;
1521
+        $pxHeight = $yUnits * $svgHeight;
1522 1522
 	    
1523
-	    return new ImageHelper_Size(array(
1523
+        return new ImageHelper_Size(array(
1524 1524
             (int)$pxWidth,
1525 1525
             (int)$pxHeight,
1526
-	        'bits' => 8
1527
-	    ));
1528
-	}
1526
+            'bits' => 8
1527
+        ));
1528
+    }
1529 1529
 
1530 1530
     /**
1531 1531
      * Crops the image to the specified width and height, optionally
@@ -1584,26 +1584,26 @@  discard block
 block discarded – undo
1584 1584
         return $image->getColorAt(0, 0);
1585 1585
     }
1586 1586
     
1587
-   /**
1588
-    * Calculates the image's average color value, and
1589
-    * returns an associative array with red, green,
1590
-    * blue and alpha keys.
1591
-    * 
1592
-    * @throws ImageHelper_Exception
1593
-    * @return RGBAColor
1594
-    */
1587
+    /**
1588
+     * Calculates the image's average color value, and
1589
+     * returns an associative array with red, green,
1590
+     * blue and alpha keys.
1591
+     * 
1592
+     * @throws ImageHelper_Exception
1593
+     * @return RGBAColor
1594
+     */
1595 1595
     public function calcAverageColorRGB() : RGBAColor
1596 1596
     {
1597
-       return $this->calcAverageColor();
1597
+        return $this->calcAverageColor();
1598 1598
     }
1599 1599
     
1600
-   /**
1601
-    * Calculates the image's average color value, and
1602
-    * returns a hex color string (without the #).
1603
-    * 
1604
-    * @throws ImageHelper_Exception
1605
-    * @return string
1606
-    */
1600
+    /**
1601
+     * Calculates the image's average color value, and
1602
+     * returns a hex color string (without the #).
1603
+     * 
1604
+     * @throws ImageHelper_Exception
1605
+     * @return string
1606
+     */
1607 1607
     public function calcAverageColorHex() : string
1608 1608
     {
1609 1609
         return $this->calcAverageColor()->toHEX();
@@ -1656,15 +1656,15 @@  discard block
 block discarded – undo
1656 1656
             ->getValue();
1657 1657
     }
1658 1658
     
1659
-   /**
1660
-    * Retrieves a md5 hash of the source image file.
1661
-    * 
1662
-    * NOTE: Only works when the helper has been created
1663
-    * from a file. Otherwise, an exception is thrown.
1664
-    * 
1665
-    * @return string
1666
-    * @throws ImageHelper_Exception|OutputBuffering_Exception
1667
-    */
1659
+    /**
1660
+     * Retrieves a md5 hash of the source image file.
1661
+     * 
1662
+     * NOTE: Only works when the helper has been created
1663
+     * from a file. Otherwise, an exception is thrown.
1664
+     * 
1665
+     * @return string
1666
+     * @throws ImageHelper_Exception|OutputBuffering_Exception
1667
+     */
1668 1668
     public function getHash() : string
1669 1669
     {
1670 1670
         if($this->newImage === null)
Please login to merge, or discard this patch.