Jump to content
Sign in to follow this  
RomanMuradov

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

Recommended Posts

Решил проблему с качеством загружаемых картинок. 
При загрузке картинок получался размытый фон и на каталожной съемке (с белым фоном) фон плыл серыми полосами. На форуме предлагалось несколько решений, таких как увеличить качество сжатия до 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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.