/modules/storecommander/ead6f6fce09/SC/lib/js/ckeditor/kcfinder/lib/class_image_imagick.php
https://gitlab.com/ptisky/API_prestashop · PHP · 328 lines · 242 code · 48 blank · 38 comment · 31 complexity · 9a0bcc151e76417555c75f4b38ee0cad MD5 · raw file
- <?php
- /**
- * Store Commander
- *
- * @category administration
- * @author Store Commander - support@storecommander.com
- * @version 2015-09-15
- * @uses Prestashop modules
- * @since 2009
- * @copyright Copyright © 2009-2015, Store Commander
- * @license commercial
- * All rights reserved! Copying, duplication strictly prohibited
- *
- * *****************************************
- * * STORE COMMANDER *
- * * http://www.StoreCommander.com *
- * * V 2015-09-15 *
- * *****************************************
- *
- * Compatibility: PS version: 1.1 to 1.6.1
- *
- **/
-
- /** This file is part of KCFinder project
- *
- * @desc ImageMagick image driver class
- * @package KCFinder
- * @version 3.12
- * @author Pavel Tzonkov <sunhater@sunhater.com>
- * @copyright 2010-2014 KCFinder Project
- * @license http://opensource.org/licenses/GPL-3.0 GPLv3
- * @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
- * @link http://kcfinder.sunhater.com
- */
-
- namespace kcfinder;
-
- class image_imagick extends image {
-
- static $MIMES = array(
- //'tif' => "image/tiff"
- );
-
-
- // ABSTRACT PUBLIC METHODS
-
- public function resize($width, $height) {//
- if (!$width) $width = 1;
- if (!$height) $height = 1;
- try {
- $this->image->scaleImage($width, $height);
- } catch (\Exception $e) {
- return false;
- }
- $this->width = $width;
- $this->height = $height;
- return true;
- }
-
- public function resizeFit($width, $height, $background=false) {//
- if (!$width) $width = 1;
- if (!$height) $height = 1;
-
- try {
- $this->image->scaleImage($width, $height, true);
- $size = $this->image->getImageGeometry();
- } catch (\Exception $e) {
- return false;
- }
-
- if ($background === false) {
- $this->width = $size['width'];
- $this->height = $size['height'];
- return true;
-
- } else {
- try {
- $this->image->setImageBackgroundColor($background);
- $x = -round(($width - $size['width']) / 2);
- $y = -round(($height - $size['height']) / 2);
- $this->image->extentImage($width, $height, $x, $y);
- } catch (\Exception $e) {
- return false;
- }
- $this->width = $width;
- $this->height = $height;
- return true;
- }
- }
-
- public function resizeCrop($width, $height, $offset=false) {
- if (!$width) $width = 1;
- if (!$height) $height = 1;
-
- if (($this->width / $this->height) > ($width / $height)) {
- $h = $height;
- $w = ($this->width * $h) / $this->height;
- $y = 0;
- if ($offset !== false) {
- if ($offset > 0)
- $offset = -$offset;
- if (($w + $offset) <= $width)
- $offset = $width - $w;
- $x = $offset;
- } else
- $x = ($width - $w) / 2;
-
- } else {
- $w = $width;
- $h = ($this->height * $w) / $this->width;
- $x = 0;
- if ($offset !== false) {
- if ($offset > 0)
- $offset = -$offset;
- if (($h + $offset) <= $height)
- $offset = $height - $h;
- $y = $offset;
- } else
- $y = ($height - $h) / 2;
- }
-
- $x = round($x);
- $y = round($y);
- $w = round($w);
- $h = round($h);
- if (!$w) $w = 1;
- if (!$h) $h = 1;
-
- try {
- $this->image->scaleImage($w, $h);
- $this->image->cropImage($width, $height, -$x, -$y);
- } catch (\Exception $e) {
- return false;
- }
-
- $this->width = $width;
- $this->height = $height;
- return true;
- }
-
- public function rotate($angle, $background="#000000") {
- try {
- $this->image->rotateImage(new \ImagickPixel($background), $angle);
- $size = $this->image->getImageGeometry();
- } catch (\Exception $e) {
- return false;
- }
- $this->width = $size['width'];
- $this->height = $size['height'];
- return true;
- }
-
- public function flipHorizontal() {
- try {
- $this->image->flopImage();
- } catch (\Exception $e) {
- return false;
- }
- return true;
- }
-
- public function flipVertical() {
- try {
- $this->image->flipImage();
- } catch (\Exception $e) {
- return false;
- }
- return true;
- }
-
- public function watermark($file, $left=false, $top=false) {
- try {
- $wm = new \Imagick($file);
- $size = $wm->getImageGeometry();
- } catch (\Exception $e) {
- return false;
- }
-
- $w = $size['width'];
- $h = $size['height'];
- $x =
- ($left === true) ? 0 : (
- ($left === null) ? round(($this->width - $w) / 2) : (
- (($left === false) || !preg_match('/^\d+$/', $left)) ? ($this->width - $w) : $left));
- $y =
- ($top === true) ? 0 : (
- ($top === null) ? round(($this->height - $h) / 2) : (
- (($top === false) || !preg_match('/^\d+$/', $top)) ? ($this->height - $h) : $top));
-
- if ((($x + $w) > $this->width) ||
- (($y + $h) > $this->height) ||
- ($x < 0) || ($y < 0)
- )
- return false;
-
- try {
- $this->image->compositeImage($wm, \Imagick::COMPOSITE_DEFAULT, $x, $y);
- } catch (\Exception $e) {
- return false;
- }
- return true;
- }
-
-
- // ABSTRACT PROTECTED METHODS
-
- protected function getBlankImage($width, $height) {
- try {
- $img = new \Imagick();
- $img->newImage($width, $height, "none");
- $img->setImageCompressionQuality(100);
- } catch (\Exception $e) {
- return false;
- }
- return $img;
- }
-
- protected function getImage($image, &$width, &$height) {
-
- if (is_object($image) && ($image instanceof image_imagick)) {
- try {
- $image->image->setImageCompressionQuality(100);
- } catch (\Exception $e) {
- return false;
- }
- $width = $image->width;
- $height = $image->height;
- return $image->image;
-
- } elseif (is_object($image) && ($image instanceof \Imagick)) {
- try {
- $image->setImageCompressionQuality(100);
- $size = $image->getImageGeometry();
- } catch (\Exception $e) {
- return false;
- }
- $width = $size['width'];
- $height = $size['height'];
- return $image;
-
- } elseif (is_string($image)) {
- try {
- $image = new \Imagick($image);
- $image->setImageCompressionQuality(100);
- $size = $image->getImageGeometry();
- } catch (\Exception $e) {
- return false;
- }
- $width = $size['width'];
- $height = $size['height'];
- return $image;
-
- } else
- return false;
- }
-
-
- // PSEUDO-ABSTRACT STATIC METHODS
-
- static function available() {
- return class_exists("\\Imagick");
- }
-
- static function checkImage($file) {
- try {
- $img = new \Imagick($file);
- } catch (\Exception $e) {
- return false;
- }
- return true;
- }
-
-
- // INHERIT METHODS
-
- public function output($type="jpeg", array $options=array()) {
- $type = strtolower($type);
- try {
- $this->image->setImageFormat($type);
- } catch (\Exception $e) {
- return false;
- }
- $method = "optimize_$type";
- if (method_exists($this, $method) && !$this->$method($options))
- return false;
-
- if (!isset($options['file'])) {
- if (!headers_sent()) {
- $mime = isset(self::$MIMES[$type]) ? self::$MIMES[$type] : "image/$type";
- header("Content-Type: $mime");
- }
- echo $this->image;
-
- } else {
- $file = $options['file'] . ".$type";
- try {
- $this->image->writeImage($file);
- } catch (\Exception $e) {
- @unlink($file);
- return false;
- }
-
- if (!@rename($file, $options['file'])) {
- @unlink($file);
- return false;
- }
- }
-
- return true;
- }
-
-
- // OWN METHODS
-
- protected function optimize_jpeg(array $options=array()) {
- $quality = isset($options['quality']) ? $options['quality'] : self::DEFAULT_JPEG_QUALITY;
- try {
- $this->image->setImageCompression(\Imagick::COMPRESSION_JPEG);
- $this->image->setImageCompressionQuality($quality);
- } catch (\Exception $e) {
- return false;
- }
- return true;
- }
-
- }
-
- ?>