So steigern Sie die Qualität von Produktfotos JPG (Magento 2)

18

Die JPG-Komprimierung in Magento 2 ist sehr stark, sodass die Qualität der Produktbilder in der Katalog- und Produktansicht sehr schlecht wird. Wie kann ich die Bildkomprimierung für JPGs in Magento 2 ändern?

Oliver Schmid
quelle

Antworten:

15

Diese Lösung funktioniert bei mir:

Datei: {Vendor} / {Module} /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>

Datei: {Vendor} / {Module} / Model / Product Sie können die Qualität nach Belieben einstellen. Leeren Sie dann den Bild-Cache.

namespace {Vendor}\{Module}\Model\Product;

class Image extends \Magento\Catalog\Model\Product\Image {

    protected function _construct() {
        $this->_quality = 100;

        parent::_construct();
    }
}
Papamike
quelle
Wie lautet der Pfad, um diese Datei in Ihr benutzerdefiniertes Design einzufügen? Ich kann nicht herausfinden, M2s Ablagestruktur. M1 war sooooo viel einfacher
styzzz
In App / Code / {Vendor} / {Module}
Papamike
Aber wird das beim Upgrade nicht außer Kraft gesetzt? Ich dachte, Sie müssten es in Ihr Thema setzen. Nein?
Styzzz
1
Nein, der Ordner {Vendor} muss durch Ihren Namespace ersetzt werden (könnte zum Beispiel styzzz sein). Es wird nicht überschrieben. Bsp .: / app / code / styzzz / ImageCompression / ...
Papamike
Wenn Sie ein PNG-Bild für das Produkt haben, ist die Komprimierungsstufe im GD2-Adapter fest vendor/magento/framework/Image/Adapter/Gd2.php:167
Franck Garnier
5

Wie bei Magento 2.3.2 ist es möglich, die Bildqualität einzustellen, ohne den Code zu ändern:

Stores> Konfiguration> Erweitert> System> Konfiguration zum Hochladen von Bildern> Qualität> 100

Der XML-Konfigurationspfad lautet:

system/upload_configuration/jpeg_quality
K Vij
quelle
Dies gibt keine Antwort auf die Frage. Sobald Sie über eine ausreichende Reputation verfügen, können Sie jeden Beitrag kommentieren . Geben Sie stattdessen Antworten an, die nicht vom Fragesteller geklärt werden müssen . - Aus der Bewertung
Jai
1
"Wie kann ich die Bildkomprimierung für JPGs in Magento 2 ändern?" ... War das nicht die Frage?
K Vij
Besser als die anderen Antworten, da keine Codeänderung erforderlich ist
Barry
2

inside - Hersteller / Magento / Modul-Katalog / Helper / Image.php

Sie finden das Generikum:

public function setQuality($quality)
{
    $this->_getModel()->setQuality($quality);
    return $this;  
}

Wenn Sie nach seiner Verwendung suchen, finden Sie eine Methode mit dem gleichen Namen in:

magento / modulkatalog / modell / produkt / image.php

und in dieser Datei:

/**
 * Default quality value (for JPEG images only).
 *
 * @var int
 */         
protected $_quality = 80;

Dieser Wert muss auf 95 gesetzt werden.

Dies reduziert die Komprimierung und Artefakte auf der Site.

Ich gehe davon aus, dass Ihre Jungs diese Änderungen mit einem entsprechend implementierten Code-Override vornehmen müssen - also nicht durch Änderung dieser Kerndatei. Ich bin kein Magento-Entwickler, sonst hätte ich einen Riss ...

LW71
quelle
3
Das Ändern von Werten im Core (Hersteller) wird beim nächsten Update überschrieben, daher ist das Ändern von Core-Dateien im Allgemeinen eine schlechte Idee
Marcel Hauri,
2

Die Antworten hier sind ziemlich falsch, IMO. Es ist nicht die Qualität, die Sie aus erster Hand ändern sollten , es ist die Größe der Bilder. Warum?

Wenn Sie ein Bild komprimieren, um die kleinstmögliche Dateigröße zu erhalten, ist die Komprimierungsrate am vorteilhaftesten, um dieses Ziel zu erreichen. Das zweite sind die Abmessungen des Bildes. Außerdem sollten Sie das ursprüngliche Quellbild immer komprimieren, bevor Sie es verkleinern (ich habe nicht überprüft, wie Magento damit umgeht), um die Dateigröße so weit wie möglich zu verringern und gleichzeitig Details zu erhalten.

Auf Retina-Bildschirmen benötigen Sie 2x die angezeigte Größe. Damit ein scharfes Bild mit 250 x 250 Pixel angezeigt wird, muss es 500 x 500 Pixel groß sein.

Also würde ich mit dem Ändern der Themen beginnen view.xml, um die angezeigte Größe zu verdoppeln. Wenn das Bild immer noch nicht gut aussieht, würde ich die Qualitätseinstellung erhöhen. Wenn Sie Zeit haben, können Sie auch reaktionsschnelle Bilder implementieren (doppelte Größen werden also nur auf Geräten mit Retina-Bildschirm geladen ).

Sie können die Größe auch verringern, indem Sie alle Metadaten aus dem Image entfernen. Sie sind sich nicht sicher, ob Magento dies standardmäßig tut oder nicht. Dies ist normalerweise ein Teil guter Bildkomprimierungsdienste.

OZZIE
quelle
1
Danke, dass du diesen Kumpel erklärt hast! Ich wusste, dass es einen logischen Grund für Magentos Bilddummheit geben muss! Ich bin immer noch ein bisschen verwirrt über die Implementierung. Angenommen, meine Produkte werden auf der Produktseite als 700-Pixel-Quadrat angezeigt. Dann müsste ein Bild mit 1400-Pixel-Quadrat erstellt und die entsprechende Einstellung in der Datei view.xml ebenfalls auf 1400-Pixel geändert werden. Ich habe damit und mit dem in anderen Antworten erwähnten Override gespielt, aber die Qualität auf der Produktseite ist immer niedriger als beim Klicken auf das Bild, um die vergrößerte Ansicht aufzurufen.
Joshua Flood
@JoshuaFlood Ich denke, das gezoomte Bild hat einen eigenen Eintrag in view.xml mit einer größeren Größe. Ich kann mich nicht genau erinnern, welchen Schlüssel es hat oder welche Größe es hat
OZZIE
Keine Sorge, ich habe es sortiert. Danke für den Tipp! Ich bin mir nicht sicher, was genau passiert ist, aber ich hatte vergessen, die "kleinen" Bilder durch die Bilder mit doppelter Größe zu ersetzen, damit das Problem bestehen kann.
Joshua Flood
Das ist keine gute Antwort. Sie sollten reaktionsschnelle Bilder und das Attribut srcset verwenden und nicht nur ein größeres Bild bereitstellen, das bei Bedarf verkleinert wird.
Freitag
@fritzmg "aus erster Hand" "Wenn Sie Zeit haben, könnten Sie auch responsive Images implementieren" .. welchen Teil finden Sie schwer zu verstehen?
OZZIE