Come aumentare la qualità delle foto dei prodotti JPG (Magento 2)


18

La compressione JPG su Magento 2 è molto forte, in modo che la qualità delle immagini dei prodotti peggiori nella vista Catalogo e Prodotto. Come posso modificare la compressione delle immagini per JPG in Magento 2?

Risposte:


15

Questa soluzione funziona per me:

File: {Venditore} / {Modulo} /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>

File: {Venditore} / {Modulo} / Modello / Prodotto È possibile impostare la qualità come desiderato. Quindi svuota la cache delle immagini.

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

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

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

        parent::_construct();
    }
}

qual è il percorso per inserire questo file nel tuo tema personalizzato? non riesco a capire la struttura di archiviazione M2s. M1 era molto più facile
styzzz,

In app / code / {Venditore} / {Modulo}
Papamike,

ma non verrà sostituito durante l'aggiornamento? ho pensato che avresti dovuto metterlo nel tuo tema. no?
Styzzz,

1
No, la cartella {Vendor} deve essere sostituita dal tuo spazio dei nomi (potrebbe essere styzzz con l'esempio). Non sarà ignorato. Es .: / app / code / styzzz / ImageCompression / ...
Papamike

Se si dispone di un'immagine PNG per il prodotto, il livello di compressione è codificato nell'adattatore GD2: vendor/magento/framework/Image/Adapter/Gd2.php:167a 9 (massimo)
Franck Garnier,

5

Per quanto riguarda Magento 2.3.2 è possibile impostare la qualità dell'immagine senza cambiare il codice:

Negozi> Configurazione> Avanzate> Sistema> Configurazione caricamento immagini> Qualità> 100

Il percorso di configurazione XML è:

system/upload_configuration/jpeg_quality

Questo non fornisce una risposta alla domanda. Una volta che hai una reputazione sufficiente , sarai in grado di commentare qualsiasi post ; fornire invece risposte che non richiedono chiarimenti da parte del richiedente . - Dalla recensione
Jai,

1
"Come posso modificare la compressione delle immagini per JPG in Magento 2" ... Non era questa la domanda?
K Vij,

meglio delle altre risposte in quanto non è richiesta la modifica del codice
Barry,

2

inside - vendor / magento / module-catalog / Helper / Image.php

Troverai il generico:

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

Se grep per il suo utilizzo troverai un metodo con lo stesso nome in:

Magento / module-catalogo / modello / prodotto / image.php

e all'interno di quel file:

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

È questo valore - che deve essere impostato su 95.

Ciò ridurrà la compressione e gli artefatti nel sito.

I vostri ragazzi supporrò di dover apportare queste modifiche con una sostituzione del codice opportunamente distribuita, cioè non mediante la modifica di questo file principale. Non sono uno sviluppatore di Magento, altrimenti avrei una crepa ...


3
In realtà, la modifica di qualsiasi valore nel Core (fornitore) verrà sovrascritta con il prossimo aggiornamento, quindi la modifica dei file core è in genere una cattiva idea
Marcel Hauri,

2

Le risposte qui sono IMO piuttosto sbagliate. Non è la qualità che dovresti cambiare in prima persona , è la dimensione delle immagini. Perché?

Bene, la cosa è quando si comprime un'immagine per ottenere la dimensione del file più piccola possibile, quindi il tasso di compressione è il più vantaggioso per raggiungere tale obiettivo. Il secondo è le dimensioni dell'immagine. Inoltre, dovresti sempre comprimere l'immagine di origine originale prima di ridimensionarla (non ho verificato come Magento lo gestisce) per ridurre al minimo le dimensioni del file preservando i dettagli.

Sulle schermate della retina è necessario raddoppiare le dimensioni visualizzate. Quindi, per ottenere un'immagine nitida visualizzata a 250x250 pixel, l'immagine deve essere di 500x500 pixel.

Quindi inizierei con la modifica dei temi view.xmlper raddoppiare le dimensioni visualizzate. Se l'immagine non ha ancora un bell'aspetto, prenderei in considerazione l'idea di aumentare l'impostazione di qualità. Se hai tempo, puoi anche implementare immagini reattive (quindi le dimensioni raddoppiate vengono caricate solo su dispositivi con retina ).

Puoi anche ridurre le dimensioni rimuovendo tutti i metadati dall'immagine, non sono sicuro che Magento lo faccia per impostazione predefinita o meno. Di solito fa parte di buoni servizi di compressione delle immagini.


1
Grazie per aver spiegato questo amico! Sapevo che doveva esserci un motivo logico per la figuraccia di immagini di Magento! Sono comunque un po 'confuso riguardo all'implementazione. Quindi, supponiamo che i miei prodotti vengano visualizzati nella pagina del prodotto come un quadrato di 700 px, quindi dovrei creare un'immagine di 1400 pixel quadrati, quindi modificare anche l'impostazione corrispondente nel file view.xml su 1400 px? Ho giocato con questo, così come l'override menzionato in altre risposte, ma la qualità è sempre inferiore nella pagina del prodotto rispetto a quando faccio clic sull'immagine per accedere alla vista 'ingrandita'.
Joshua Flood,

@JoshuaFlood Penso che l'immagine ingrandita abbia una propria voce in view.xml con una dimensione maggiore, non riesco a ricordare esattamente quale chiave ha o di quale dimensione è però
OZZIE

Nessun problema l'ho risolto. Grazie per il consiglio! Non sapevo esattamente cosa fosse successo, ma avevo dimenticato di sostituire le "piccole" immagini con quelle a doppia dimensione, quindi il problema poteva essere lì.
Joshua Flood,

Questa non è una buona risposta Quello che dovresti fare è usare immagini reattive e l'attributo srcset - non solo fornire un'immagine più grande in generale che verrà ridotta in scala ogni volta che è necessario.
fritzmg,

@fritzmg "prima mano" "Se hai tempo potresti implementare anche immagini reattive" .. quale parte trovi difficile da capire?
OZZIE,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.