ctam Опубликовано: октября 23, 2017 Жалоба Поделиться Опубликовано: октября 23, 2017 Здравствуйте. После прочтения http://ocshop.info/nemnozhko-pro-xosting/, решил сделать себе на хостинге подобное. Обратился в тех.поддержку хостинга, они выполнили просьбу и установили OptiPng + JpegOptim, Imagick включили в настройках php модулей. Возник вопрос, как вкрутить "в библиотеку поддержку этого хлама." отсюда: http://ocshop.info/nemnozhko-tryukov/. Так понимаю, надо внести код в файл system/library/image.php: $info = pathinfo(DIR_IMAGE . $new_image); $extension = strtolower($info['extension']); if ($extension == 'jpeg' || $extension == 'jpg') { shell_exec("jpegoptim --max=90 --strip-all --all-progressive ". (DIR_IMAGE . $new_image)); } elseif ($extension == 'png') { shell_exec("optipng ". (DIR_IMAGE . $new_image)) . "-strip all"; } Подскажите, пожалуйста, как правильно интегрировать исходный код? Сборка ocStore 1.5.5.1.2 В комментарии к статье, написано, что есть очепятка в этой строчке: shell_exec("optipng ". (DIR_IMAGE . $new_image)) . "-strip all"; Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
ctam Опубликовано: октября 23, 2017 Автор Жалоба Поделиться Опубликовано: октября 23, 2017 Заменить код в файле system/library/image.php на предложенный вами, верно? Если да, то получил 500 ошибку. Напомню, сборка ocStore 1.5.5.1.2 Шаред хостинг на AdminVps Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
BuslikDrev Опубликовано: октября 23, 2017 Жалоба Поделиться Опубликовано: октября 23, 2017 44 минуты назад, ctam сказал: Заменить код в файле system/library/image.php на предложенный вами, верно? Если да, то получил 500 ошибку. Напомню, сборка ocStore 1.5.5.1.2 Шаред хостинг на AdminVps Из-за того, что вставили не сюда admin/Model/Tool/Image.php А значит для system/library/image.php нужно собрать самому, смотря на предложенный файл. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
ctam Опубликовано: октября 23, 2017 Автор Жалоба Поделиться Опубликовано: октября 23, 2017 1 час назад, BuslikDrev сказал: Из-за того, что вставили не сюда admin/Model/Tool/Image.php Благодарю! Вставил куда вы указали. Ошибка больше не вываливается. Но прироста в PageSpeed не увидел Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
BuslikDrev Опубликовано: октября 23, 2017 Жалоба Поделиться Опубликовано: октября 23, 2017 33 минуты назад, ctam сказал: Благодарю! Вставил куда вы указали. Ошибка больше не вываливается. Но прироста в PageSpeed не увидел Я себе так сделал в system/library/image.php: Было: Скрытый текст public function save($file, $quality = 70) { $info = pathinfo($file); $extension = strtolower($info['extension']); if (is_resource($this->image)) { if ($extension == 'jpeg' || $extension == 'jpg') { imagejpeg($this->image, $file, $quality); } elseif($extension == 'png') { imagepng($this->image, $file); } elseif($extension == 'gif') { imagegif($this->image, $file); } imagedestroy($this->image); } } Стало: Скрытый текст public function save($file, $quality = 84) { $info = pathinfo($file); $extension = strtolower($info['extension']); if (is_resource($this->image)) { if ($extension == 'jpeg' || $extension == 'jpg') { imageinterlace($this->image, true); imagejpeg($this->image, $file, $quality); } elseif ($extension == 'png') { imagepng($this->image, $file); } elseif ($extension == 'gif') { imagegif($this->image, $file); } imagedestroy($this->image); } } Вам нужно также очистить кеш изображений, чтобы пересоздались они. jpegoptim --max=90 это настройка сжатия jpeg Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
satyr Опубликовано: октября 23, 2017 Жалоба Поделиться Опубликовано: октября 23, 2017 А как эта штуковина дружит с модулем Турбо в 2.3? Там же тоже есть настройка сжатия. Что лучше использовать? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
ctam Опубликовано: октября 30, 2017 Автор Жалоба Поделиться Опубликовано: октября 30, 2017 В 23.10.2017 at 10:30, Yoda сказал: <?php class ModelToolImage extends Model { /** * * @param filename string * @param width * @param height * @param type char [default, w, h] * default = scale with white space, * w = fill according to width, * h = fill according to height * */ public function resize($filename, $width, $height, $type = "") { if (!file_exists(DIR_IMAGE . $filename) || !is_file(DIR_IMAGE . $filename)) { return; } $info = pathinfo($filename); $extension = $info['extension']; $old_image = $filename; $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . $type .'.' . $extension; //$new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension; $currentLocal = setlocale(LC_ALL, 0); setlocale(LC_ALL, 'ru_RU.UTF-8'); $pattern = [ '/\/\/+/', '/\s/', ]; $replace = [ '/', '-', ]; $new_image = 'cache/' . trim(escapeshellarg(preg_replace($pattern, $replace, urldecode(utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . $type . '.' . $extension))), '\''); if (!file_exists(DIR_IMAGE . $new_image) || (filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image))) { $path = ''; $directories = explode('/', dirname(str_replace('../', '', $new_image))); foreach ($directories as $directory) { $path = $path . '/' . $directory; if (!file_exists(DIR_IMAGE . $path)) { @mkdir(DIR_IMAGE . $path, 0777); } } list($width_orig, $height_orig) = getimagesize(DIR_IMAGE . $old_image); if ($width_orig != $width || $height_orig != $height) { $image = new Image(DIR_IMAGE . $old_image); $image->resize($width, $height, $type); $image->save(DIR_IMAGE . $new_image); } else { copy(DIR_IMAGE . $old_image, DIR_IMAGE . $new_image); } $img_log = new Log('img_log.log'); $optimized_image_path = escapeshellarg(DIR_IMAGE . $new_image); if ($extension == 'jpeg' || $extension == 'jpg') { $img_log->write(shell_exec("jpegoptim --max=85 --strip-all --all-progressive " . $optimized_image_path)); } elseif ($extension == 'png') { $img_log->write(shell_exec("optipng -strip all -o7 ". $optimized_image_path ." 2>&1")); } } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { return $this->config->get('config_ssl') . 'image/' . $new_image; } else { return $this->config->get('config_url') . 'image/' . $new_image; } } } ?> Почему-то пропадают превьюшки в товарах админки Возвращаю изменения назад - все работает. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
satyr Опубликовано: ноября 1, 2017 Жалоба Поделиться Опубликовано: ноября 1, 2017 В 31.10.2017 at 10:44, Yoda сказал: В идеале весь этот огород неплохо подружить с Imagick, но код не дам. Я жадный. Ну не бесплатно же, ёптыть Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
ctam Опубликовано: ноября 3, 2017 Автор Жалоба Поделиться Опубликовано: ноября 3, 2017 В 31.10.2017 at 11:44, Yoda сказал: Прежде чем использовать на шареде - надо попросить их включить либы. В 23.10.2017 at 10:12, ctam сказал: Обратился в тех.поддержку хостинга, они выполнили просьбу и установили OptiPng + JpegOptim, Imagick включили в настройках php модулей. Включено. В итоге пережал все изображения через shell одной командой: $find -name *.jpg -exec jpegoptim --strip-all '{}' \; Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
oldejuk Опубликовано: декабря 30, 2017 Жалоба Поделиться Опубликовано: декабря 30, 2017 кто то проворачивал это дело на ukraine hosting? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.