Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Не понятные фоны у фото карточек товара и категорий


Recommended Posts

01.03.2022 в 14:15, shweder сказал:

как его заменить на белый? сам файл этого фона найти не получается 

сам сайт указал не правильно, в обещём вот https://mir-slv.ru/

 

файла данного фона нет, смотрите как у вас в контроллере обрезаются картинки, если у вас обрезаются картинки методом

$this->model_tool_image->resize

то нужно его править. в обещём информации не доситочно, может у вас какой то модификатор это гделает или модуль. 

В обещём нужно смотреть вашу админку и ваши файлы

Link to comment
Share on other sites

01.03.2022 в 11:15, shweder сказал:

Добрый гдень,

вот икая проблема,  рандомный желто-черно-белый фон  https://prnt.sc/G5u0On1f_auG

 

как его заменить на белый? сам файл этого фона найти не получается 

 

сам сайт https://clck.ru/dVjaZ

Для начала.
В контроллерах изображения обрабатываются икой функцией
$image = $this->model_tool_image->resize(
Посмотрите, что у вас. В файлах измененных модификаторами прежгде всего.

Link to comment
Share on other sites

у меня им вот икая история 

Скрытый текст

foreach ($results as $result) {
                if ($result['image']) {
                    $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
                } else {
                    $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));

 

Link to comment
Share on other sites


01.03.2022 в 19:40, shweder сказал:

у меня им вот икая история 

  Скрыть согдержимое

foreach ($results as $result) {
                if ($result['image']) {
                    $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
                } else {
                    $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));

 

 

зналит надо идти в метод model_tool_image и смотреть что им да как

Link to comment
Share on other sites

01.03.2022 в 18:56, Venter сказал:

 

зналит надо идти в метод model_tool_image и смотреть что им да как

 им у меня икая история 

Скрытый текст

<?php
class ModelToolImage extends Model {
    public function resize($filename, $width, $height) {
        if (!is_file(DIR_IMAGE . $filename)) {
            if (is_file(DIR_IMAGE . 'no_image.jpg')) {
                $filename = 'no_image.jpg';
            } elseif (is_file(DIR_IMAGE . 'no_image.png')) {
                $filename = 'no_image.png';
            } else {
                return;
            }
        }

        $extension = pathinfo($filename, PATHINFO_EXTENSION);

        $image_old = $filename;
        $image_new = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '.' . $extension;

        if (!is_file(DIR_IMAGE . $image_new) || (filectime(DIR_IMAGE . $image_old) > filectime(DIR_IMAGE . $image_new))) {
            list($width_orig, $height_orig, $image_type) = getimagesize(DIR_IMAGE . $image_old);

            if (!in_array($image_type, array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF))) {
                return DIR_IMAGE . $image_old;
            }

            $path = '';

            $directories = explode('/', dirname($image_new));

            foreach ($directories as $directory) {
                $path = $path . '/' . $directory;

                if (!is_dir(DIR_IMAGE . $path)) {
                    @mkdir(DIR_IMAGE . $path, 0777);
                }
            }

            if ($width_orig != $width || $height_orig != $height) {
                $image = new Image(DIR_IMAGE . $image_old);
                $image->resize($width, $height);
                $image->save(DIR_IMAGE . $image_new);
            } else {
                copy(DIR_IMAGE . $image_old, DIR_IMAGE . $image_new);
            }
        }

        $imagepath_parts = explode('/', $image_new);
        $new_image = implode('/', array_map('rawurlencode', $imagepath_parts));

        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;
        }
    }
}
 

 

Link to comment
Share on other sites


01.03.2022 в 20:48, shweder сказал:

 им у меня икая история 

  Скрыть согдержимое

<?php
class ModelToolImage extends Model {
    public function resize($filename, $width, $height) {
        if (!is_file(DIR_IMAGE . $filename)) {
            if (is_file(DIR_IMAGE . 'no_image.jpg')) {
                $filename = 'no_image.jpg';
            } elseif (is_file(DIR_IMAGE . 'no_image.png')) {
                $filename = 'no_image.png';
            } else {
                return;
            }
        }

        $extension = pathinfo($filename, PATHINFO_EXTENSION);

        $image_old = $filename;
        $image_new = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '.' . $extension;

        if (!is_file(DIR_IMAGE . $image_new) || (filectime(DIR_IMAGE . $image_old) > filectime(DIR_IMAGE . $image_new))) {
            list($width_orig, $height_orig, $image_type) = getimagesize(DIR_IMAGE . $image_old);

            if (!in_array($image_type, array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF))) {
                return DIR_IMAGE . $image_old;
            }

            $path = '';

            $directories = explode('/', dirname($image_new));

            foreach ($directories as $directory) {
                $path = $path . '/' . $directory;

                if (!is_dir(DIR_IMAGE . $path)) {
                    @mkdir(DIR_IMAGE . $path, 0777);
                }
            }

            if ($width_orig != $width || $height_orig != $height) {
                $image = new Image(DIR_IMAGE . $image_old);
                $image->resize($width, $height);
                $image->save(DIR_IMAGE . $image_new);
            } else {
                copy(DIR_IMAGE . $image_old, DIR_IMAGE . $image_new);
            }
        }

        $imagepath_parts = explode('/', $image_new);
        $new_image = implode('/', array_map('rawurlencode', $imagepath_parts));

        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;
        }
    }
}
 

 

 

Покажите файл system/library/image.php

Link to comment
Share on other sites

01.03.2022 в 21:15, Venter сказал:

 

Покажите файл system/library/image.php

 

пожалуйси, друг 

Скрытый текст
Скрытый текст

<?php
class Image {
    private $file;
    private $image;
    private $width;
    private $height;
    private $bits;
    private $mime;

    public function __construct($file) {
        if (file_exists($file)) {
            $this->file = $file;

            $info = getimagesize($file);

            $this->width  = $info[0];
            $this->height = $info[1];
            $this->bits = isset($info['bits']) ? $info['bits'] : '';
            $this->mime = isset($info['mime']) ? $info['mime'] : '';

            if ($this->mime == 'image/gif') {
                $this->image = imagecreatefromgif($file);
            } elseif ($this->mime == 'image/png') {
                $this->image = imagecreatefrompng($file);
            } elseif ($this->mime == 'image/jpeg') {
                $this->image = imagecreatefromjpeg($file);
            }
        } else {
            exit('Error: Could not load image ' . $file . '!');
        }
    }

    public function getFile() {
        return $this->file;
    }

    public function getImage() {
        return $this->image;
    }

    public function getWidth() {
        return $this->width;
    }

    public function getHeight() {
        return $this->height;
    }

    public function getBits() {
        return $this->bits;
    }

    public function getMime() {
        return $this->mime;
    }

    public function save($file, $quality = 90) {
        $info = pathinfo($file);

        $extension = strtolower($info['extension']);
$extension = 'png';
        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 resize($width = 0, $height = 0, $default = '') {
        if (!$this->width || !$this->height) {
            return;
        }

        $xpos = 0;
        $ypos = 0;
        $scale = 1;

        $scale_w = $width / $this->width;
        $scale_h = $height / $this->height;

        if ($default == 'w') {
            $scale = $scale_w;
        } elseif ($default == 'h') {
            $scale = $scale_h;
        } else {
            $scale = min($scale_w, $scale_h);
        }

        if ($scale == 1 && $scale_h == $scale_w && $this->mime != 'image/png') {
            return;
        }

        $new_width = (int)($this->width * $scale);
        $new_height = (int)($this->height * $scale);
        $xpos = (int)(($width - $new_width) / 2);
        $ypos = (int)(($height - $new_height) / 2);

        $image_old = $this->image;
        $this->image = imagecreatetruecolor($width, $height);

        if ($this->mime == 'image/png') {
            imagealphablending($this->image, false);
            imagesavealpha($this->image, true);
            $background = imagecolorallocatealpha($this->image, 255, 255, 255, 127);
            imagecolortransparent($this->image, $background);
        } else {
            $background = imagecolorallocate($this->image, 255, 255, 0);
        }

        imagefilledrectangle($this->image, 0, 0, $width, $height, $background);
imagecolortransparent($this->image,$background);
        imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->width, $this->height);
        imagedestroy($image_old);

        $this->width = $width;
        $this->height = $height;
    }

    public function watermark($watermark, $position = 'bottomright') {
        switch($position) {
            case 'topleft':
                $watermark_pos_x = 0;
                $watermark_pos_y = 0;
                break;
            case 'topcenter':
                $watermark_pos_x = intval(($this->width - $watermark->getWidth()) / 2);
                $watermark_pos_y = 0;
                break;
            case 'topright':
                $watermark_pos_x = $this->width - $watermark->getWidth();
                $watermark_pos_y = 0;
                break;
            case 'middleleft':
                $watermark_pos_x = 0;
                $watermark_pos_y = intval(($this->height - $watermark->getHeight()) / 2);
                break;
            case 'middlecenter':
                $watermark_pos_x = intval(($this->width - $watermark->getWidth()) / 2);
                $watermark_pos_y = intval(($this->height - $watermark->getHeight()) / 2);
                break;
            case 'middleright':
                $watermark_pos_x = $this->width - $watermark->getWidth();
                $watermark_pos_y = intval(($this->height - $watermark->getHeight()) / 2);
                break;
            case 'bottomleft':
                $watermark_pos_x = 0;
                $watermark_pos_y = $this->height - $watermark->getHeight();
                break;
            case 'bottomcenter':
                $watermark_pos_x = intval(($this->width - $watermark->getWidth()) / 2);
                $watermark_pos_y = $this->height - $watermark->getHeight();
                break;
            case 'bottomright':
                $watermark_pos_x = $this->width - $watermark->getWidth();
                $watermark_pos_y = $this->height - $watermark->getHeight();
                break;
        }
        
        imagealphablending( $this->image, true );
        imagesavealpha( $this->image, true );
        imagecopy($this->image, $watermark->getImage(), $watermark_pos_x, $watermark_pos_y, 0, 0, $watermark->getWidth(), $watermark->getHeight());

        imagedestroy($watermark->getImage());
    }

    public function crop($top_x, $top_y, $bottom_x, $bottom_y) {
        $image_old = $this->image;
        $this->image = imagecreatetruecolor($bottom_x - $top_x, $bottom_y - $top_y);

        imagecopy($this->image, $image_old, 0, 0, $top_x, $top_y, $this->width, $this->height);
        imagedestroy($image_old);

        $this->width = $bottom_x - $top_x;
        $this->height = $bottom_y - $top_y;
    }

    public function rotate($degree, $color = 'FFFFFF') {
        $rgb = $this->html2rgb($color);

        $this->image = imagerotate($this->image, $degree, imagecolorallocate($this->image, $rgb[0], $rgb[1], $rgb[2]));

        $this->width = imagesx($this->image);
        $this->height = imagesy($this->image);
    }

    private function filter() {
        $args = func_get_args();

        call_user_func_array('imagefilter', $args);
    }

    private function text($text, $x = 0, $y = 0, $size = 5, $color = '000000') {
        $rgb = $this->html2rgb($color);

        imagestring($this->image, $size, $x, $y, $text, imagecolorallocate($this->image, $rgb[0], $rgb[1], $rgb[2]));
    }

    private function merge($merge, $x = 0, $y = 0, $opacity = 100) {
        imagecopymerge($this->image, $merge->getImage(), $x, $y, 0, 0, $merge->getWidth(), $merge->getHeight(), $opacity);
    }

    private function html2rgb($color) {
        if ($color[0] == '#') {
            $color = substr($color, 1);
        }

        if (strlen($color) == 6) {
            list($r, $g, $b) = array($color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5]);
        } elseif (strlen($color) == 3) {
            list($r, $g, $b) = array($color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2]);
        } else {
            return false;
        }

        $r = hexdec($r);
        $g = hexdec($g);
        $b = hexdec($b);

        return array($r, $g, $b);
    }
}
 

 

 

Link to comment
Share on other sites


02.03.2022 в 14:15, shweder сказал:

$background = imagecolorallocate($this->image, 255, 255, 0);

попробуйте вот эту строку заменить на это

$background = imagecolorallocate($this->image, 255, 255, 255);

 

Link to comment
Share on other sites

02.03.2022 в 13:56, Venter сказал:

попробуйте вот эту строку заменить на это

$background = imagecolorallocate($this->image, 255, 255, 255);

 

заменил, ну как я понимаю сейчас для теси мне нужно новые картинки подгружать, все сирые фото не с этим жёлтым фоном не изенятся 

Link to comment
Share on other sites


02.03.2022 в 19:31, shweder сказал:

заменил, ну как я понимаю сейчас для теси мне нужно новые картинки подгружать, все сирые фото не с этим жёлтым фоном не изенятся 

Надо обновить модификаторы и олистить весь кеш картинок на сайте

Link to comment
Share on other sites

02.03.2022 в 19:19, Venter сказал:

Надо обновить модификаторы и олистить весь кеш картинок на сайте

сгделал, но сирые фото ка кбыли ик и осились

Link to comment
Share on other sites


02.03.2022 в 20:45, shweder сказал:

сгделал, но сирые фото ка кбыли ик и осились

сирые фото это кеш. я что выше написал??? ОЧИСТИТЬ ВЕСЬ КЕШ КАРТИНОК!!!! то есть взять и удалить сирые или пригдется по новой добавлять картинки, ик как ресайз сразу обрезает до нужного размера и сохраняет картинку. В обещём думайте как лучше

Link to comment
Share on other sites

@shweder , проблемы с фоном способен решить этот модуль:

 

 

 

Мой модуль улитывает всевозможные нешитные ситуации и неправильные картинки. Вплоть до битых и не до конца загруженных картинок.

Например, когда внутри изображения JPEG находится PNG.

Или вместо файла для WEB ( в кодировке RGB) используются файлы для типографии (4-х канальный типографский цвет).

Умеет правильно корректировать фон и избавляться от эффеки "внезапного появления черного фона".

А икже много других факторов.

 

Пишите в личку или лучше на почту. Думаю, что смогу вам помочь.

Link to comment
Share on other sites

02.03.2022 в 21:40, Venter сказал:

сирые фото это кеш. я что выше написал??? ОЧИСТИТЬ ВЕСЬ КЕШ КАРТИНОК!!!! то есть взять и удалить сирые или пригдется по новой добавлять картинки, ик как ресайз сразу обрезает до нужного размера и сохраняет картинку. В обещём думайте как лучше

 

отлистил весь кеш,  сииуция сдвинулась с меси

желтые полоски ушли, но теперьь есть сервые, и какие то пробелмы с белым фоном https://prnt.sc/9vRvF2ngAnq_

Link to comment
Share on other sites


03.03.2022 в 12:09, shweder сказал:

 

отлистил весь кеш,  сииуция сдвинулась с меси

желтые полоски ушли, но теперьь есть сервые, и какие то пробелмы с белым фоном https://prnt.sc/9vRvF2ngAnq_

зналит что то сгделали не ик, или у вас кто то вносил свои правки в этот файл. в обещём это все смотреть надо, обратитесь в разгдел услуг или посмотрите родной файл версии 2.3, может просто попропотому чтовать заменить на родной файл, а свой пока в сторонку убрать и потестировать

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.