Перейти к содержанию
RomanMuradov

Как улучшить качество загружаемого изображения

Рекомендуемые сообщения

Решил проблему с качеством загружаемых картинок. 
При загрузке картинок получался размытый фон и на каталожной съемке (с белым фоном) фон плыл серыми полосами. На форуме предлагалось несколько решений, таких как увеличить качество сжатия до 100 и т.д.  На мой взгляд проблема в компиляторе изображений в самом php. Проблема оказалась не нова в сообществе интернет-магазинов.
Необходимо в файле system/library/image.php после строк 
 

imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->info['width'], $this->info['height']);
imagedestroy($image_old); 

 

вставить :

// Это - цвет на который будем заменять (белый)
$colorWhite = imagecolorallocate($this->image, 255, 255, 255);

// Пробегаем все пиксели на изображении по вертикали и горизонтали
for($y=0; $y<($height); ++$y)
  {
	for($x=0; $x<($width); ++$x)
	    {
		$colorat=imagecolorat($this->image, $x, $y);
		$r = ($colorat >> 16) & 0xFF;
		$g = ($colorat >> 8) & 0xFF;
		$b = $colorat & 0xFF;

// Если цвет пикселя нас не устраивает, заменяем его на белый
if((($r == 253)||($r == 254))&&(($g == 253)||($g == 254))&&(($b == 253)||($b == 254))) {
	imagesetpixel($this->image, $x, $y, $colorWhite);
	   }
     }
}

Как видно из кода - чистим скомпилированную картинку в пределах 253,253,253 по RGB, избавляемся от шумов.
Сохраняем. Вауля - проблемы нет.

  • +1 1

Поделиться сообщением


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

Данный способ работает с вновь загружаемыми картинками - поэтому чтобы поправить свои фото на сайте их необходимом залить через загрузку вновь -удалив старые варианты. И почистить кэшь папки изображений image/cache - удалите от туда все оставив index.html

Поделиться сообщением


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

Здравствуйте. Надеюсь попал по адресу со своей проблемой.

В общем суть. Сайт заказа товаров онлайн, на главной странице расположены фотки товара и его описание (цена, наименование). При нажатии на саму картинку или название происходит переход на страницу с более детальным описанием товара. Если на этой странице нажать на фото, то в отдельном всплывающем окне будет показана увеличенная вариация этой фотографии. Мне надо что бы при нажатии на изображение открывалось окно, в котором будет фотка с большие разрешением (это получается отдельный файл, специально подготовленный для подобного показа). Но если просто добавить еще одно фото через админку, то добавиться просто 2 файл. А мне этого не надо.

Помогите разобраться как эту задачу решить. Я новичок в OpenCart) Заранее спасибо)

Поделиться сообщением


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

В карточке товара, при нажатии/ наведении на фото - открывается/показывается исходное изображение, в том качестве в котором вы загрузили на сайт. Если у вас исходное изображение скажем размером 1000x1000 пикселей, а открывается 250x250 то вам надо указать размер открываемого изображения в админке сайта: Настройки - Редактировать - Изображения - Размер всплывающего изображения товара. Если я правильно понял вашу проблему.

Поделиться сообщением


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

Исходный размер файла 200*200, в админке стоит 500*500. Если грузануть фото к товару разрешением 1000*1000, то теоритически при нажатие на картинку, с настройками в админке 500*500, качество будет значительно лучше.

Поделиться сообщением


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

Теоретически да. Но увеличите нагрузку на сервер. Так в чем у вас проблема-то? Попробую подсказать :) как решить

Поделиться сообщением


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

Попробую максимально доступно рассказать)))

Есть 2 фото для товара, одна изначально отредактирована в фотошопе под разрешение 200*200, другая 1000*1000. Первая отображается на главной странице, в каталоге товаров. Вторую хотелось бы видел при нажитии или наведении на первую фото, чисто для более детального просмотра самого товара. Как его некое представление в лучшем качестве. Сейчас работает следующем образом, при нажатии на картинку товара, всплывает окно и в нем показана первая картинка, та что с разрешением 200*200, а размер самого всплывающего окна больше и поэтому получается очень не красивая и не четкая картинка.

Вот такая вот история)

Поделиться сообщением


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

BesPredel63, если картинок не так много, можно вручную заменить кеш тех что 200x200, загрузив в качестве основной 1000x1000 разумеется.
ещё вариант - предоставить сжатие 1000x1000 -> 200x200 браузеру, указав width и height в стилях. некоторых такой вариант устраивает.
или например, поставить уровень сжатия 100, в настройках библиотеки system/library/image.php
либо можно поставить стороннее платное решение которое будет сжимать картинки в лучшем качестве.
это я перечислил все известные мне способы без трюков с выводом картинок разного разрешения, когда в базе хранится две картинки - маленькая и большая

Поделиться сообщением


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

Решил проблему с качеством загружаемых картинок. 

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

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

Поделиться сообщением


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

BesPredel63, если картинок не так много, можно вручную заменить кеш тех что 200x200, загрузив в качестве основной 1000x1000 разумеется.

ещё вариант - предоставить сжатие 1000x1000 -> 200x200 браузеру, указав width и height в стилях. некоторых такой вариант устраивает.

или например, поставить уровень сжатия 100, в настройках библиотеки system/library/image.php

либо можно поставить стороннее платное решение которое будет сжимать картинки в лучшем качестве.

это я перечислил все известные мне способы без трюков с выводом картинок разного разрешения, когда в базе хранится две картинки - маленькая и большая

Хорошие варианты. Попробую сегодня их применить. Спасибо.

Поделиться сообщением


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

СТОП! Так ваш метод "исправляет" только цвета, близкие к белому, т.е. к фону? А как быть с основной "вкусняшкой" на фотке? С кофточкой или с пирожком, например?

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.