Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Проблема resize()


YuriGural

Recommended Posts

Версия магазина: OpenCart v1.4.x, v1.5.x

Проблема:

Не всегда правильно изменяются размеры превьюшек. Например, в настройках, размер большого изображения товара: 250х250. Оригинал изображения 140х250, результатом будет размещение изображения в cache размером 140х250, вместо 250х250.

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

Решение:

Открываем файл /system/library/image.php

Всему виной вот этот кусок, в функции resize()

		$scale = min($width / $this->info['width'], $height / $this->info['height']);
		
		if ($scale == 1) {
			return;
		}

Нужно проделать следующие манипуляции.

Добавляем после этих строк:

    public function resize($width = 0, $height = 0) {
    	if (!$this->info['width'] || !$this->info['height']) {
			return;
    	}

следующий код:

    	if ($width == $this->info['width'] && $height == $this->info['height']) {
			return;
    	}
а ниже приведенные строки, удаляем:

		if ($scale == 1) {
			return;
		}

  • +1 1
Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Камень в тот же огород :)

При изменении размера изображения иногда получаются пиксельные полосы белого цвета справа изображения (на белых шаблонах не видно).

Дело в том что тут:

$new_width = (int)($this->info['width'] * $scale);
$new_height = (int)($this->info['height'] * $scale);
при приведении к целочисленному типу новый размер всегда округляется в меньшую сторону.

Как вариант, заменить на:

$new_width = (int)Ceil($this->info['width'] * $scale);
$new_height = (int)Ceil($this->info['height'] * $scale);

И в добавок: если ресайзин квадратом а изображение имеет другое соотношение сторон, то иногда бесит белое заливание пустого фона.

Цвет меняется в этом же файле:

$background = imagecolorallocate($this->image, 255, 255, 255);
в десятичной системе: R, G, B.
Надіслати
Поділитися на інших сайтах


  • 1 year later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.