X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FObject%2FImage.php;h=4645a8678a59fd1e330614315a364dfb01005a07;hb=d936cc5a5c2755a0056ff12a297bf0fa25dc6bf1;hp=e25afd5e900aa3eb6bc47ed758f30f9ef19029ef;hpb=03038e7a3bb74bdab497d26b7f829a5c3036d1c2;p=friendica.git diff --git a/src/Object/Image.php b/src/Object/Image.php index e25afd5e90..4645a8678a 100644 --- a/src/Object/Image.php +++ b/src/Object/Image.php @@ -1,13 +1,27 @@ . + * */ + namespace Friendica\Object; use Exception; -use Friendica\Core\Config; -use Friendica\Core\System; use Friendica\DI; use Friendica\Util\Images; use Imagick; @@ -32,7 +46,7 @@ class Image private $types; /** - * @brief Constructor + * Constructor * @param string $data * @param boolean $type optional, default null * @throws \Friendica\Network\HTTPException\InternalServerErrorException @@ -57,7 +71,8 @@ class Image } /** - * @brief Destructor + * Destructor + * * @return void */ public function __destruct() @@ -107,14 +122,18 @@ class Image $this->image->setFormat($format); // Always coalesce, if it is not a multi-frame image it won't hurt anyway - $this->image = $this->image->coalesceImages(); + try { + $this->image = $this->image->coalesceImages(); + } catch (Exception $e) { + return false; + } /* * setup the compression here, so we'll do it only once */ switch ($this->getType()) { case "image/png": - $quality = Config::get('system', 'png_quality'); + $quality = DI::config()->get('system', 'png_quality'); if ((! $quality) || ($quality > 9)) { $quality = PNG_QUALITY; } @@ -130,7 +149,7 @@ class Image $this->image->setCompressionQuality($quality); break; case "image/jpeg": - $quality = Config::get('system', 'jpeg_quality'); + $quality = DI::config()->get('system', 'jpeg_quality'); if ((! $quality) || ($quality > 100)) { $quality = JPEG_QUALITY; } @@ -440,7 +459,6 @@ class Image break; } - // Logger::log('exif: ' . print_r($exif,true)); return $exif; } @@ -501,7 +519,7 @@ class Image } /** - * @brief Scale image to target dimensions + * Scale image to target dimensions * * @param int $dest_width * @param int $dest_height @@ -523,7 +541,12 @@ class Image do { // FIXME - implement horizontal bias for scaling as in following GD functions // to allow very tall images to be constrained only horizontally. - $this->image->scaleImage($dest_width, $dest_height); + try { + $this->image->scaleImage($dest_width, $dest_height); + } catch (Exception $e) { + // Imagick couldn't use the data + return false; + } } while ($this->image->nextImage()); // These may not be necessary anymore @@ -552,6 +575,21 @@ class Image return true; } + /** + * Convert a GIF to a PNG to make it static + */ + public function toStatic() + { + if ($this->type != 'image/gif') { + return; + } + + if ($this->isImagick()) { + $this->type == 'image/png'; + $this->image->setFormat('png'); + } + } + /** * @param integer $max maximum * @param integer $x x coordinate @@ -610,11 +648,11 @@ class Image $stamp1 = microtime(true); file_put_contents($path, $string); - DI::profiler()->saveTimestamp($stamp1, "file", System::callstack()); + DI::profiler()->saveTimestamp($stamp1, "file"); } /** - * @brief Magic method allowing string casting of an Image object + * Magic method allowing string casting of an Image object * * Ex: $data = $Image->asString(); * can be replaced by @@ -651,14 +689,14 @@ class Image switch ($this->getType()) { case "image/png": - $quality = Config::get('system', 'png_quality'); + $quality = DI::config()->get('system', 'png_quality'); if ((!$quality) || ($quality > 9)) { $quality = PNG_QUALITY; } imagepng($this->image, null, $quality); break; case "image/jpeg": - $quality = Config::get('system', 'jpeg_quality'); + $quality = DI::config()->get('system', 'jpeg_quality'); if ((!$quality) || ($quality > 100)) { $quality = JPEG_QUALITY; } @@ -671,7 +709,8 @@ class Image } /** - * @brief supported mimetypes and corresponding file extensions + * supported mimetypes and corresponding file extensions + * * @return array * @deprecated in version 2019.12 please use Util\Images::supportedTypes() instead. */ @@ -681,7 +720,8 @@ class Image } /** - * @brief Maps Mime types to Imagick formats + * Maps Mime types to Imagick formats + * * @return array With with image formats (mime type as key) * @deprecated in version 2019.12 please use Util\Images::getFormatsMap() instead. */ @@ -690,22 +730,6 @@ class Image return Images::getFormatsMap(); } - /** - * Guess image mimetype from filename or from Content-Type header - * - * @param string $filename Image filename - * @param boolean $fromcurl Check Content-Type header from curl request - * @param string $header passed headers to take into account - * - * @return string|null - * @throws Exception - * @deprecated in version 2019.12 please use Util\Images::guessType() instead. - */ - public static function guessType($filename, $fromcurl = false, $header = '') - { - return Images::guessType($filename, $fromcurl, $header); - } - /** * @param string $url url * @return array