/**
* Constructor
- * @param string $data
- * @param boolean $type optional, default null
+ *
+ * @param string $data Image data
+ * @param string $type optional, default null
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public function __construct($data, $type = null)
+ public function __construct(string $data, string $type = null)
{
$this->imagick = class_exists('Imagick');
$this->types = Images::supportedTypes();
$this->type = $type;
if ($this->isImagick() && $this->loadData($data)) {
- return true;
+ return;
} else {
// Failed to load with Imagick, fallback
$this->imagick = false;
}
- return $this->loadData($data);
+ $this->loadData($data);
}
/**
}
/**
- * @param string $data data
- * @return boolean
+ * Loads image data into handler class
+ *
+ * @param string $data Image data
+ * @return boolean Success
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- private function loadData($data)
+ private function loadData(string $data): bool
{
if ($this->isImagick()) {
$this->image = new Imagick();
* setup the compression here, so we'll do it only once
*/
switch ($this->getType()) {
- case "image/png":
+ case 'image/png':
$quality = DI::config()->get('system', 'png_quality');
/*
* From http://www.imagemagick.org/script/command-line-options.php#quality:
$quality = $quality * 10;
$this->image->setCompressionQuality($quality);
break;
- case "image/jpeg":
+
+ case 'image/jpg':
+ case 'image/jpeg':
$quality = DI::config()->get('system', 'jpeg_quality');
$this->image->setCompressionQuality($quality);
}
/**
* @return boolean
*/
- public function isValid()
+ public function isValid(): bool
{
if ($this->isImagick()) {
return ($this->image !== false);
}
/**
+ * Scales image down
+ *
* @param integer $max max dimension
* @return mixed
*/
- public function scaleDown($max)
+ public function scaleDown(int $max)
{
if (!$this->isValid()) {
return false;
}
/**
+ * Rotates image
+ *
* @param integer $degrees degrees to rotate image
* @return mixed
*/
- public function rotate($degrees)
+ public function rotate(int $degrees)
{
if (!$this->isValid()) {
return false;
}
/**
+ * Flips image
+ *
* @param boolean $horiz optional, default true
* @param boolean $vert optional, default false
* @return mixed
*/
- public function flip($horiz = true, $vert = false)
+ public function flip(bool $horiz = true, bool $vert = false)
{
if (!$this->isValid()) {
return false;
}
/**
- * @param string $filename filename
+ * Fixes orientation and maybe returns EXIF data (?)
+ *
+ * @param string $filename Filename
* @return mixed
*/
- public function orient($filename)
+ public function orient(string $filename)
{
if ($this->isImagick()) {
// based off comment on http://php.net/manual/en/imagick.getimageorientation.php
}
/**
- * @param integer $min minimum dimension
+ * Rescales image to minimum size
+ *
+ * @param integer $min Minimum dimension
* @return mixed
*/
- public function scaleUp($min)
+ public function scaleUp(int $min)
{
if (!$this->isValid()) {
return false;
}
/**
- * @param integer $dim dimension
+ * Scales image to square
+ *
+ * @param integer $dim Dimension
* @return mixed
*/
- public function scaleToSquare($dim)
+ public function scaleToSquare(int $dim)
{
if (!$this->isValid()) {
return false;
/**
* Scale image to target dimensions
*
- * @param int $dest_width
- * @param int $dest_height
- * @return boolean
+ * @param int $dest_width Destination width
+ * @param int $dest_height Destination height
+ * @return boolean Success
*/
- private function scale($dest_width, $dest_height)
+ private function scale(int $dest_width, int $dest_height): bool
{
if (!$this->isValid()) {
return false;
/**
* Convert a GIF to a PNG to make it static
+ *
+ * @return void
*/
public function toStatic()
{
}
/**
+ * Crops image
+ *
* @param integer $max maximum
* @param integer $x x coordinate
* @param integer $y y coordinate
* @param integer $h height
* @return mixed
*/
- public function crop($max, $x, $y, $w, $h)
+ public function crop(int $max, int $x, int $y, int $w, int $h)
{
if (!$this->isValid()) {
return false;
$this->image = $dest;
$this->width = imagesx($this->image);
$this->height = imagesy($this->image);
+
+ // All successful
+ return true;
}
/**
* @return string
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
- public function __toString() {
- return $this->asString();
+ public function __toString(): string
+ {
+ return (string) $this->asString();
}
/**
+ * Returns image as string or false on failure
+ *
* @return mixed
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
imageinterlace($this->image, true);
switch ($this->getType()) {
- case "image/png":
+ case 'image/png':
$quality = DI::config()->get('system', 'png_quality');
imagepng($this->image, null, $quality);
break;
- case "image/jpeg":
+
+ case 'image/jpeg':
+ case 'image/jpg':
$quality = DI::config()->get('system', 'jpeg_quality');
imagejpeg($this->image, null, $quality);
+ break;
}
$string = ob_get_contents();
ob_end_clean();