COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

OptiPng + JpegOptim + Imagick


Recommended Posts

Здравствуйте.

После прочтения 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";

 

Ссылка на комментарий
Поделиться на других сайтах

Заменить код в файле system/library/image.php на предложенный вами, верно?

Если да, то получил 500 ошибку.

 

Напомню, сборка ocStore 1.5.5.1.2 

Шаред хостинг на AdminVps

Ссылка на комментарий
Поделиться на других сайтах

  В 23.10.2017 at 07:48, ctam сказал:

Заменить код в файле system/library/image.php на предложенный вами, верно?

Если да, то получил 500 ошибку.

 

Напомню, сборка ocStore 1.5.5.1.2 

Шаред хостинг на AdminVps

Expand  

 

Из-за того, что вставили не сюда 

admin/Model/Tool/Image.php

А значит для system/library/image.php нужно собрать самому, смотря на предложенный файл.

Ссылка на комментарий
Поделиться на других сайтах

  В 23.10.2017 at 08:04, BuslikDrev сказал:

Из-за того, что вставили не сюда 

admin/Model/Tool/Image.php
Expand  

 

Благодарю!

Вставил куда вы указали. Ошибка больше не вываливается.

 

Но прироста в PageSpeed не увидел :unsure:

Ссылка на комментарий
Поделиться на других сайтах

  В 23.10.2017 at 09:17, ctam сказал:

 

Благодарю!

Вставил куда вы указали. Ошибка больше не вываливается.

 

Но прироста в PageSpeed не увидел :unsure:

Expand  

 

Я себе так сделал в system/library/image.php:

Было:

  Показать содержимое

 

Стало:

  Показать содержимое

 

 

Вам нужно также очистить кеш изображений, чтобы пересоздались они. jpegoptim --max=90 это настройка сжатия jpeg

Ссылка на комментарий
Поделиться на других сайтах

  В 23.10.2017 at 07: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;
        }    
    }
}
?>

 

Expand  

 

Почему-то пропадают превьюшки в товарах админки :huh:

Возвращаю изменения назад - все работает.

Ссылка на комментарий
Поделиться на других сайтах

  В 31.10.2017 at 08:44, Yoda сказал:

В идеале весь этот огород неплохо подружить с Imagick, но код не дам. Я жадный.

Expand  

Ну не бесплатно же, ёптыть

Ссылка на комментарий
Поделиться на других сайтах

  В 31.10.2017 at 08:44, Yoda сказал:

Прежде чем использовать на шареде - надо попросить их включить либы.

Expand  

 

  В 23.10.2017 at 07:12, ctam сказал:

Обратился в тех.поддержку хостинга, они выполнили просьбу и установили OptiPng + JpegOptim, Imagick включили в настройках php модулей.

Expand  

 

Включено.

 

В итоге пережал все изображения через shell одной командой: 

$find -name *.jpg -exec jpegoptim --strip-all '{}' \;

 

Ссылка на комментарий
Поделиться на других сайтах

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу