Como aumentar a qualidade das fotos do produto JPG (Magento 2)

18

A compactação JPG no Magento 2 é muito forte, para que a qualidade das imagens do produto fique muito ruim na visualização Catálogo e Produto. Como posso alterar a compactação de imagem para JPG no Magento 2?

Oliver Schmid
fonte

Respostas:

15

Esta solução funciona para mim:

Arquivo: {Fornecedor} / {Módulo} /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>

Arquivo: {Fornecedor} / {Módulo} / Modelo / Produto Você pode definir a qualidade para o que quiser. Em seguida, limpe o cache da imagem.

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

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

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

        parent::_construct();
    }
}
Papamike
fonte
qual é o caminho para colocar esse arquivo no seu tema personalizado? Eu não consigo descobrir a estrutura de arquivamento M2s. M1 foi muuuito muito mais fácil
styzzz
No aplicativo / código / {Fornecedor} / {Módulo}
Papamike
mas isso não será substituído durante a atualização? Eu pensei que você teria que colocá-lo no seu tema. não?
Styzzz
11
Não, a pasta {Vendor} deve ser substituída pelo seu namespace (pode ser styzzz por exemplo). Não será substituído. Ex .: / app / code / styzzz / ImageCompression / ...
Papamike
Se tem uma imagem PNG para o produto, o nível de compressão é codificado no adaptador GD2: vendor/magento/framework/Image/Adapter/Gd2.php:167a 9 (max)
Franck Garnier
5

Quanto ao Magento 2.3.2, é possível definir a qualidade da imagem sem alterar o código:

Lojas> Configuração> Avançado> Sistema> Configuração de Upload de Imagens> Qualidade> 100

O caminho de configuração XML é:

system/upload_configuration/jpeg_quality
K Vij
fonte
Isso não fornece uma resposta para a pergunta. Depois de ter reputação suficiente, você poderá comentar qualquer postagem ; em vez disso, forneça respostas que não exijam esclarecimentos do solicitante . - Da avaliação
Jai
11
"Como posso alterar a compactação de imagem para JPG no Magento 2" ... Essa não era a pergunta?
K Vij 11/09
melhor do que as outras respostas, pois nenhuma alteração de código é necessária
Barry
2

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

Você encontrará o genérico:

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

Se você grep para seu uso, encontrará um método com o mesmo nome em:

magento / catalog-module / Model / Product / Image.php

e dentro desse arquivo:

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

É esse valor - que precisa ser definido como 95.

Isso reduzirá a compactação e artefatos no site.

Vocês assumem que precisam fazer essas modificações com uma substituição de código implantada adequadamente - ou seja, não com a modificação deste arquivo principal. Eu não sou um desenvolvedor magento caso contrário, eu teria uma rachadura ....

LW71
fonte
3
Na verdade, alterar quaisquer valores no núcleo (fornecedor) serão substituídos com a próxima atualização, de modo a mudar arquivos de núcleo é em geral uma má idéia
Marcel Hauri
2

As respostas aqui são IMO bastante erradas. Não é a qualidade que você deve mudar em primeira mão , é o tamanho das imagens. Por quê?

Bem, ao comprimir uma imagem para obter o menor tamanho de arquivo possível, a taxa de compactação é a mais benéfica para alcançar esse objetivo. O segundo são as dimensões da imagem. Além disso, você deve sempre compactar a imagem original antes de reduzi-la (não verifiquei como o magento lida com isso) para reduzir o tamanho do arquivo o máximo possível, preservando os detalhes.

Nas telas de retina, você precisa do dobro do tamanho exibido. Portanto, para obter uma imagem nítida exibida em 250x250 pixels, a imagem precisa ter 500x500 pixels.

Então, eu começaria alterando os temas view.xmlpara dobrar o tamanho exibido. Se a imagem ainda não parecer boa, eu consideraria aumentar a configuração de qualidade. Se você tiver tempo, poderá implementar imagens responsivas também (tamanhos duplos são carregados apenas em dispositivos de tela retina ).

Você também pode diminuir o tamanho removendo todos os metadados da imagem, sem saber se o magento faz isso por padrão ou não. Geralmente faz parte de bons serviços de compactação de imagem.

OZZIE
fonte
11
Obrigado por explicar este companheiro! Eu sabia que devia haver uma razão lógica para a brincadeira de imagem do magento! Ainda estou um pouco confuso sobre a implementação. Então, digamos que meus produtos estejam sendo exibidos na página do produto como um quadrado de 700 px, seria necessário criar uma imagem com 1400 px e depois alterar a configuração correspondente no arquivo view.xml para 1400 px também? Eu brinquei com isso, assim como a substituição mencionada em outras respostas, mas a qualidade é sempre menor na página do produto do que quando clico na imagem para entrar na visualização 'ampliada'.
Joshua Flood
@JoshuaFlood Eu acho que a imagem ampliada tem a sua própria entrada no view.xml com um tamanho maior, não me lembro exatamente o que chave que tem ou que tamanho é que
OZZIE
Não se preocupe, eu resolvi. Obrigado pela dica! Não sabia exatamente o que havia feito, mas havia me esquecido de substituir as imagens "pequenas" pelas de tamanho duplo, para que o problema pudesse estar lá.
Joshua Flood
Esta não é uma boa resposta. O que você deve fazer é usar imagens responsivas e o atributo srcset - não apenas fornecer uma imagem maior em geral, que será reduzida sempre que necessário.
Fritzmg 22/08/19
@fritzmg "first hand" "Se você tiver tempo, poderá implementar imagens responsivas também" .. qual parte você acha difícil de entender?
OZZIE