製品写真JPG(Magento 2)の品質を向上させる方法


18

Magento 2のJPG圧縮は非常に強力であるため、カタログおよび製品ビューでは製品画像の品質が非常に悪くなります。Magento 2でJPGの画像圧縮を変更するにはどうすればよいですか?

回答:


15

この解決策は私のために働く:

ファイル:{ベンダー} / {モジュール} /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();
    }
}

このファイルをカスタムテーマに配置するパスは何ですか?M2sのファイリング構造を把握できません。M1はすっごくはるかに簡単だった
styzzz

アプリ/コード/ {ベンダー} / {モジュール}で
パパミケ

しかし、アップグレード中に上書きされることはありませんか?私はあなたのテーマにそれを入れなければならないと思いました。番号?
styzzz

1
いいえ、{Vendor}フォルダーは名前空間に置き換える必要があります(例ではstyzzzになります)。上書きされません。例:/ app / code / styzzz / ImageCompression / ...
パパミケ

製品のPNGイメージがある場合、圧縮レベルはGD2アダプターにハードコーディングされます:vendor/magento/framework/Image/Adapter/Gd2.php:1679(最大)
フランクガルニエ

5

Magento 2.3.2に関しては、コードを変更せずに画質を設定できます。

ストア>設定>詳細設定>システム>画像アップロード設定>品質> 100

XML設定パスは次のとおりです。

system/upload_configuration/jpeg_quality

これは質問に対する答えを提供しません。十分な評判たら、投稿コメントできるようになります。代わりに、askerからの説明を必要としない回答を提供してください。- 口コミより
ジャイ

1
「Magento 2でJPGの画像圧縮を変更するにはどうすればいいですか?」...これは質問ではありませんでしたか?
K Vij

コードを変更する必要がないため、他の回答よりも優れています
Barry

2

内部-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の開発者ではありません。


3
コアファイルを変更すると、一般的に悪い考えですので、実際には、コア(ベンダー)のいずれかの値を変更すると、次の更新で上書きされます
マルセルHAURI

2

ここでの答えは、かなり間違ったIMOです。それは、あなたが直接変えるべき品質ではなく、画像のサイズです。どうして?

それは、画像を圧縮して可能な限り小さいファイルサイズを取得する場合、その目標を達成するために圧縮率が最も有益であるということです。2番目は、画像の寸法です。また、元のソース画像をダウンサイズする前に常に圧縮する必要があります(magentoがこれを処理する方法はチェックしていません)。

Retinaスクリーンでは、表示サイズの2倍が必要です。したがって、250x250ピクセルで鮮明な画像を表示するには、画像を500x500ピクセルにする必要があります。

そこで、テーマview.xmlを変更して、表示サイズを2倍にすることから始めます。それでも画像がよく見えない場合は、品質設定を上げることを検討します。時間があれば、レスポンシブ画像も実装できます(そのため、2倍のサイズはRetinaスクリーンデバイスにのみ読み込まれます)。

また、イメージからすべてのメタデータを削除してサイズを小さくすることもできます。magentoがデフォルトでそれを行うかどうかはわかりません。これは通常、優れた画像圧縮サービスの一部です。


1
この仲間を説明してくれてありがとう!私は、magentoのイメージの悪戯の論理的な理由があるに違いないと知っていました!ただし、実装についてはまだ少し混乱しています。だから、私の製品が製品ページに700pxの正方形として表示されているとすると、1400pxの正方形の画像を作成し、view.xmlファイルの対応する設定も1400pxに変更する必要がありますか?私はこれと他の回答で言及されているオーバーライドで遊んでいますが、製品ページの品質は、画像をクリックして「ズーム」ビューに入るときよりも常に低いです。
ジョシュア洪水

私は、ズーム画像は、それがより大きなサイズでview.xmlで自分のエントリのしていることがあるものキーまたはそれにもかかわらずであるどのようなサイズを正確に覚えていないことができると思い@JoshuaFlood
オジー

心配する必要はありません。ヒントをありがとう!何をしたのか正確にはわかりませんが、「小さな」画像を2倍のサイズの画像に置き換えるのを忘れていたため、問題が発生する可能性がありました。
ジョシュア洪水

これは良い答えではありません。レスポンシブイメージとsrcset属性を使用する必要があります-必要に応じて縮小される一般的な大きなイメージを提供するだけではありません。
fritzmg

@fritzmg "first hand" "時間があれば、レスポンシブ画像も実装できます" ..理解しにくい部分はどこですか?
オジー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.