Kompresja JPG w Magento 2 jest bardzo silna, więc jakość zdjęć produktów jest naprawdę zła w widoku katalogu i produktu. Jak mogę zmienić kompresję obrazu dla JPG w Magento 2?
Kompresja JPG w Magento 2 jest bardzo silna, więc jakość zdjęć produktów jest naprawdę zła w widoku katalogu i produktu. Jak mogę zmienić kompresję obrazu dla JPG w Magento 2?
Odpowiedzi:
To rozwiązanie działa dla mnie:
Plik: {Dostawca} / {Moduł} /etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Catalog\Model\Product\Image" type="{Vendor}\{Module}\Model\Product\Image" />
</config>
Plik: {Dostawca} / {Moduł} / Model / Produkt Możesz ustawić jakość na dowolną wartość. Następnie opróżnij pamięć podręczną obrazu.
namespace {Vendor}\{Module}\Model\Product;
class Image extends \Magento\Catalog\Model\Product\Image {
protected function _construct() {
$this->_quality = 100;
parent::_construct();
}
}
vendor/magento/framework/Image/Adapter/Gd2.php:167
do 9 (maks.)
W przypadku Magento 2.3.2 można ustawić jakość obrazu bez zmiany kodu:
Sklepy> Konfiguracja> Zaawansowane> System> Konfiguracja przesyłania zdjęć> Jakość> 100
Ścieżka konfiguracji XML to:
system/upload_configuration/jpeg_quality
inside - vendor / magento / module-catalogue / Helper / Image.php
Znajdziesz ogólny:
public function setQuality($quality)
{
$this->_getModel()->setQuality($quality);
return $this;
}
Jeśli grep za jego użyciem znajdziesz metodę o tej samej nazwie w:
magento / moduł-katalog / Model / Produkt / Image.php
i wewnątrz tego pliku:
/**
* Default quality value (for JPEG images only).
*
* @var int
*/
protected $_quality = 80;
Jest to ta wartość - która wymaga ustawienia 95.
Zmniejszy to kompresję i artefakty w witrynie.
Zakładam, że wasi ludzie będą musieli dokonać tych modyfikacji za pomocą odpowiednio wdrożonego zastąpienia kodu - tj. Nie przez modyfikację tego podstawowego pliku. Nie jestem programistą Magento, inaczej miałbym crack ...
Odpowiedzi tutaj są dość błędne IMO. To nie jest jakość, którą powinieneś zmieniać z pierwszej ręki , to rozmiar zdjęć. Dlaczego?
Problem polega na tym, że podczas kompresji obrazu w celu uzyskania najmniejszego możliwego rozmiaru pliku współczynnik kompresji jest najbardziej korzystny dla osiągnięcia tego celu. Drugi to wymiary obrazu. Powinieneś również zawsze skompresować oryginalny obraz źródłowy przed zmniejszeniem go (nie sprawdziłem, jak Magento sobie z tym radzi), aby zmniejszyć rozmiar pliku tak bardzo, jak to możliwe przy zachowaniu szczegółów.
Na ekranach siatkówki potrzebujesz 2x wyświetlanego rozmiaru. Aby uzyskać ostry obraz o wymiarach 250 x 250 pikseli, obraz musi mieć rozmiar 500 x 500 pikseli.
Zacznę więc od zmiany motywów w view.xml
celu podwojenia wyświetlanego rozmiaru. Jeśli obraz nadal nie wygląda dobrze, rozważę podniesienie jakości. Jeśli masz czas, możesz również wdrożyć responsywne obrazy (więc podwójne rozmiary są ładowane tylko na urządzeniach z ekranem Retina ).
Możesz również zmniejszyć rozmiar, usuwając wszystkie metadane z obrazu, nie jestem pewien, czy magento robi to domyślnie, czy nie. Zazwyczaj jest to część dobrych usług kompresji obrazu.