Magento 2のJPG圧縮は非常に強力であるため、カタログおよび製品ビューでは製品画像の品質が非常に悪くなります。Magento 2でJPGの画像圧縮を変更するにはどうすればよいですか?
Magento 2のJPG圧縮は非常に強力であるため、カタログおよび製品ビューでは製品画像の品質が非常に悪くなります。Magento 2でJPGの画像圧縮を変更するにはどうすればよいですか?
回答:
この解決策は私のために働く:
ファイル:{ベンダー} / {モジュール} /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>
ファイル:{Vendor} / {Module} / Model / Product品質は自由に設定できます。次に、画像キャッシュをフラッシュします。
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
9(最大)
内部-vendor / magento / module-catalog / Helper / Image.php
ジェネリックが見つかります:
public function setQuality($quality)
{
$this->_getModel()->setQuality($quality);
return $this;
}
grepを使用すると、同じ名前のメソッドが次の場所にあります。
magento / module-catalog / Model / Product / Image.php
そしてそのファイル内:
/**
* Default quality value (for JPEG images only).
*
* @var int
*/
protected $_quality = 80;
95に設定する必要があるのはこの値です。
これにより、サイトの圧縮とアーティファクトが削減されます。
皆さんは、適切にデプロイされたコードオーバーライドを使用してこの変更を行う必要があると想定します。つまり、このコアファイルの変更ではありません。Imはmagentoの開発者ではありません。
ここでの答えは、かなり間違ったIMOです。それは、あなたが直接変えるべき品質ではなく、画像のサイズです。どうして?
それは、画像を圧縮して可能な限り小さいファイルサイズを取得する場合、その目標を達成するために圧縮率が最も有益であるということです。2番目は、画像の寸法です。また、元のソース画像をダウンサイズする前に常に圧縮する必要があります(magentoがこれを処理する方法はチェックしていません)。
Retinaスクリーンでは、表示サイズの2倍が必要です。したがって、250x250ピクセルで鮮明な画像を表示するには、画像を500x500ピクセルにする必要があります。
そこで、テーマview.xml
を変更して、表示サイズを2倍にすることから始めます。それでも画像がよく見えない場合は、品質設定を上げることを検討します。時間があれば、レスポンシブ画像も実装できます(そのため、2倍のサイズはRetinaスクリーンデバイスにのみ読み込まれます)。
また、イメージからすべてのメタデータを削除してサイズを小さくすることもできます。magentoがデフォルトでそれを行うかどうかはわかりません。これは通常、優れた画像圧縮サービスの一部です。