Як підвищити якість фотографій продуктів JPG (Magento 2)


18

Стиснення JPG на Magento 2 дуже сильне, так що якість зображень виробів стає дуже поганою у поданні Каталог та Продукт. Як я можу змінити стиснення зображення для JPG у Magento 2?

Відповіді:


15

Це рішення працює для мене:

Файл: {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>

Файл: {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();
    }
}

який шлях додати цей файл у вашу власну тему? я не можу з'ясувати структуру подачі M2. М1 було sooooo набагато простіше
styzzz

У додатку / код / ​​{Продавець} / {Модуль}
Papamike

але не буде, що під час оновлення буде переосмислено? Я думав, що вам доведеться поставити це у своїй темі. ні?
styzzz

1
Ні, папку {Vendor} потрібно замінити простором імен (можна стилізувати приклад). Це не буде відмінено. Напр .: / додаток / код / ​​styzzz / ImageCompression / ...
Papamike

Якщо у вас є зображення PNG для продукту, рівень стиснення жорстко кодується в адаптері GD2: vendor/magento/framework/Image/Adapter/Gd2.php:167до 9 (макс.)
Франк Гарньє

5

Що стосується Magento 2.3.2, то можна встановити якість зображення без зміни коду:

Магазини> Конфігурація> Додатково> Система> Конфігурація завантаження зображень> Якість> 100

Конфігураційний шлях XML:

system/upload_configuration/jpeg_quality

Це не дає відповіді на запитання. Коли у вас буде достатня репутація, ви зможете коментувати будь-яку публікацію ; натомість надайте відповіді, які не потребують уточнення від запитувача . - З огляду
Джай

1
"Як я можу змінити стиснення зображення для формату JPG в Magento 2" ... Хіба це не було питанням?
K Vij

краще за інші відповіді, оскільки не потрібно змінювати код
Баррі,

2

всередині - постачальник / magento / модуль-каталог / Helper / Image.php

Ви знайдете загальне:

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

Якщо ви привітаєтесь до його використання, ви знайдете однойменний метод у:

magento / модуль-каталог / Модель / Продукт / Image.php

і всередині цього файлу:

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

Саме ця величина потребує встановлення 95.

Це зменшить стиснення та артефакти на сайті.

Ваші хлопці, я припускаю, що доведеться внести ці зміни з відповідним чином розгорнутим кодом, замість цього, тобто не шляхом модифікації цього основного файлу. Я не розробник magento, інакше у мене буде тріщина ....


3
Насправді зміна будь-яких значень у Core (постачальнику) буде замінено наступним оновленням, тому зміна основних файлів взагалі погана ідея
Марсель Хаурі

2

Відповіді тут досить неправильні ІМО. Це не якість, яку слід змінити з перших рук , це розмір зображень. Чому?

Що ж, справа в тому, що стискаючи зображення, щоб отримати найменший розмір файлу, тоді швидкість стиснення є найбільш вигідною для досягнення цієї мети. Другий - це розміри зображення. Також завжди слід стискати оригінальне вихідне зображення перед тим, як зменшити його (я не перевіряв, як magento справляється з цим), щоб максимально зменшити розмір файлу, зберігаючи деталі.

На екранах сітківки вам потрібно двічі відображений розмір. Тож для отримання чіткого зображення, що відображається в 250x250 пікселів, тоді зображення має бути 500x500 пікселів.

Тож я б почав зі зміни тем, view.xmlщоб подвоїти розмір, що відображається. Якщо зображення все ще не виглядає добре, я б подумав про покращення налаштування якості. Якщо у вас є час, ви також можете реалізувати чуйні зображення (тому подвійні розміри завантажуються лише на екрани сітківки ).

Ви також можете зменшити розмір, видаливши з зображення всі метадані, не впевнені, чи робить це magento за замовчуванням чи ні. Зазвичай це частина хороших сервісів стиснення зображень.


1
Дякую за пояснення цього товариша! Я знав, що повинна бути логічна причина для зображення мамтенто! Я все ще трохи розгублений щодо впровадження. Так, скажімо, мої продукти відображаються на сторінці продукту у вигляді площі 700 пікселів, тоді мені потрібно створити зображення, яке має квадрат 1400 пікселів, а потім змінити відповідне налаштування у файлі view.xml на 1400px? Я грав із цим, як і переосмислення, згадане в інших відповідях, але якість на сторінці продукту завжди нижча, ніж вона є, коли натискаю на зображення, щоб увійти в режим «збільшення».
Джошуа Потоп

@JoshuaFlood Я думаю, що на збільшеному зображенні є власний запис у view.xml з більшим розміром, я не можу точно пригадати, який ключ він має або якого розміру, хоча
OZZIE

Не хвилюйтесь, я розібрався. Дякую за пораду! Не точно знаю, що це зробило, але я забув замінити «маленькі» зображення на подвійні розміри, тому проблема може бути там.
Джошуа Потоп

Це не є гарною відповіддю. Що вам слід зробити, це використовувати чуйні зображення та атрибут srcset - не просто надавати більше зображення загалом, яке буде зменшено масштаб, коли це необхідно.
fritzmg

@fritzmg "з перших рук" "Якщо у вас є час, ви також можете реалізувати чуйні зображення" .. Яку частину вам важко зрозуміти?
OZZIE
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.