%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 18.218.119.156 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/dev2fun.imagecompress/lib/ |
Upload File : |
<?php /** * @author darkfriend <hi@darkfriend.ru> * @copyright dev2fun * @version 0.4.1 */ namespace Dev2fun\ImageCompress; use Bitrix\Main\Localization\Loc; use Bitrix\Main\Config\Option; IncludeModuleLangFile(__FILE__); class Jpegoptim { private static $instance; public $lastError; private $MODULE_ID = 'dev2fun.imagecompress'; private $jpegOptimPath = ''; private function __construct() { $this->jpegOptimPath = Option::get($this->MODULE_ID, 'path_to_jpegoptim'); } /** * @static * @return Compress */ public static function getInstance() { if (!isset(self::$instance)) { $c = __CLASS__; self::$instance = new $c; } return self::$instance; } /** * Проверка возможности оптимизации jpeg * @return bool * @deprecated * @uses isOptim() */ public function isJPEGOptim() { return $this->isOptim(); } /** * Проверка возможности оптимизации jpeg * @return bool */ public function isOptim() { exec($this->jpegOptimPath . '/jpegoptim --version', $s); return ($s ? true : false); } /** * Процесс оптимизации JPEG * @param string $strFilePath - абсолютный путь до картинки * @param int $quality - качество * @param array $params - дополнительные параметры * @return bool * @throws \Exception * @deprecated * @uses compress() */ public function compressJPG($strFilePath, $quality = 80, $params = []) { return $this->compress($strFilePath, $quality, $params); } /** * Процесс оптимизации JPEG * @param string $strFilePath - абсолютный путь до картинки * @param int $quality - качество * @param array $params - дополнительные параметры * @return bool * @throws \Exception */ public function compress($strFilePath, $quality = 80, $params = []) { $strFilePath = strtr( $strFilePath, [ ' ' => '\ ', '(' => '\(', ')' => '\)', ']' => '\]', '[' => '\[', ] ); // foreach (GetModuleEvents($this->MODULE_ID, "OnBeforeResizeImageJpegoptim", true) as $arEvent) // ExecuteModuleEventEx($arEvent, array(&$strFilePath, &$quality, &$params)); $event = new \Bitrix\Main\Event( $this->MODULE_ID, "OnBeforeResizeImageJpegoptim", [&$strFilePath, &$quality, &$params] ); $event->send(); $strCommand = ''; if (!empty($params['progressiveJpeg'])) { $strCommand .= '--all-progressive'; } $strCommand .= ' --strip-all -t'; if ($quality) { $strCommand .= " -m{$quality}"; } exec($this->jpegOptimPath . "/jpegoptim $strCommand $strFilePath 2>&1", $res); if (!empty($params['changeChmod'])) chmod($strFilePath, $params['changeChmod']); // foreach (GetModuleEvents($this->MODULE_ID, "OnAfterResize", true) as $arEvent) // ExecuteModuleEventEx($arEvent, array(&$strFilePath)); $event = new \Bitrix\Main\Event( $this->MODULE_ID, "OnAfterResize", [&$strFilePath] ); $event->send(); return true; } public function getOptionsSettings($advanceSettings=[]) { return []; } }