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

Opencart накладывает черный фон изображениям после ресайза


Recommended Posts

поставщик отдает фотки товаров в таком формате, что само фото является .jpg, но оно каким-то образом прозрачное

из за этого при заливке таких фоток в OpenCart 3, фоткам после ресайза накладывается черный фон :(

 

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

 

перегонять фотки в PNG формат не вариант, так как у поставщика в выгрузке дофига таких таких товаров..

 

пример такой фотки прикрепил к теме

test.jpg

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


25.06.2022 в 23:38, halfhope сказал:

это ошибка в либе, нужно приблизительно так

 

			
			if ($this->mime == 'image/gif') {
				imagegif($this->image, $file);
			} elseif ($this->mime == 'image/png') {
				imagepng($this->image, $file);
			} elseif ($this->mime == 'image/jpeg') {
				imagejpeg($this->image, $file, $quality);
			}
			/*
			if ($extension == 'jpeg' || $extension == 'jpg') {
				imagejpeg($this->image, $file, $quality);
			} elseif ($extension == 'png') {
				imagepng($this->image, $file);
			} elseif ($extension == 'gif') {
				imagegif($this->image, $file);
			}
			*/

 

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

Чтобы было понятно.
Та картинка, которую Вы прикрепили, на самом деле png, но поставщик отдает её c расширением .jpg. Программам на компьютере по сути фиолетово на расширение. Ибо расширение служит лишь для того, чтобы понять какой программой эту картинку открывать. Т.е. видим, что расширение jpg/png/gif/bmp/etc - значит это изображение. Открываем, например, редактором. А уже редактор читает содержимое файла и определяет mime type и от него зависит работа с картинкой. Аналогично с браузером. Ему не важно что за расширение у картинки. А вот встроенному "сжимателю" опенкарта - НЕ всё равно. Так как он ориентируется именно на расширение.
И код выше, как раз, исправляет это проблему в библиотеке. Т.е. заставляет применять функции сжатия (imagegif(), imagepng(), imagejpeg()) основываясь не на расширение файла, а на mime type изображения.

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

25.06.2022 в 23:47, chukcha сказал:

это ошибка в либе, нужно приблизительно так

 

			
			if ($this->mime == 'image/gif') {
				imagegif($this->image, $file);
			} elseif ($this->mime == 'image/png') {
				imagepng($this->image, $file);
			} elseif ($this->mime == 'image/jpeg') {
				imagejpeg($this->image, $file, $quality);
			}
			/*
			if ($extension == 'jpeg' || $extension == 'jpg') {
				imagejpeg($this->image, $file, $quality);
			} elseif ($extension == 'png') {
				imagepng($this->image, $file);
			} elseif ($extension == 'gif') {
				imagegif($this->image, $file);
			}
			*/

 

Вопрос решен, спасибо!

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


  • 8 months later...
25.06.2022 в 23:47, chukcha сказал:

это ошибка в либе, нужно приблизительно так

 

			
			if ($this->mime == 'image/gif') {
				imagegif($this->image, $file);
			} elseif ($this->mime == 'image/png') {
				imagepng($this->image, $file);
			} elseif ($this->mime == 'image/jpeg') {
				imagejpeg($this->image, $file, $quality);
			}
			/*
			if ($extension == 'jpeg' || $extension == 'jpg') {
				imagejpeg($this->image, $file, $quality);
			} elseif ($extension == 'png') {
				imagepng($this->image, $file);
			} elseif ($extension == 'gif') {
				imagegif($this->image, $file);
			}
			*/

 

 

Огромное спасибо за фикс! Минус головная боль пользователям АОПа, импортирующих с прайса)

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


  • 9 months later...

Я правильно понял, что изменять нужно в функции public function save, т.е. по сути - уже загруженные изображения не исправятся, нужно перезагружать заново?

А можно как-то исправить для текущих изображений, где-то в функции resize?

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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