Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

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


Recommended Posts

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

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

 

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

 

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

 

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

test.jpg

Link to comment
Share on other sites


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 2
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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);
			}
			*/

 

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

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.