Cara meningkatkan kualitas foto produk JPG (Magento 2)

18

Kompresi JPG pada Magento 2 sangat kuat, sehingga kualitas gambar produk menjadi sangat buruk dalam tampilan Katalog dan Produk. Bagaimana saya bisa mengubah kompresi gambar untuk JPG di Magento 2?

Oliver Schmid
sumber

Jawaban:

15

Solusi ini bekerja untuk saya:

File: {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>

File: {Vendor} / {Module} / Model / Product Anda dapat mengatur kualitas menjadi apa pun yang Anda inginkan. Lalu siram cache gambar.

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

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

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

        parent::_construct();
    }
}
Papamike
sumber
apa jalan untuk meletakkan file ini di tema khusus Anda? saya tidak tahu struktur pengarsipan M2s. M1 jauh lebih mudah
styzzz
Dalam aplikasi / kode / {Vendor} / {Module}
Papamike
tetapi tidakkah hal itu akan diganti saat upgrade? Saya pikir Anda harus memasukkannya ke dalam tema Anda. tidak?
styzzz
1
Tidak, folder {Vendor} harus diganti oleh namespace Anda (bisa dengan styzzz sebagai contoh). Itu tidak akan diganti. Contoh: / app / code / styzzz / ImageCompression / ...
Papamike
Jika Anda memiliki gambar PNG untuk produk, tingkat kompresi di-hardcode dalam adaptor GD2: vendor/magento/framework/Image/Adapter/Gd2.php:167ke 9 (maks)
Franck Garnier
5

Adapun Magento 2.3.2 dimungkinkan untuk mengatur kualitas gambar tanpa mengubah kode:

Toko> Konfigurasi> Lanjutan> Sistem> Konfigurasi Unggah Gambar> Kualitas> 100

Jalur konfigurasi XML adalah:

system/upload_configuration/jpeg_quality
K Vij
sumber
Ini tidak memberikan jawaban untuk pertanyaan itu. Setelah memiliki reputasi yang cukup, Anda dapat mengomentari setiap pos ; alih-alih, berikan jawaban yang tidak memerlukan klarifikasi dari penanya . - Dari Ulasan
Jai
1
"Bagaimana saya bisa mengubah kompresi gambar untuk JPG di Magento 2" ... Bukankah ini pertanyaannya?
K Vij
lebih baik daripada jawaban lain karena tidak ada perubahan kode yang diperlukan
Barry
2

di dalam - vendor / magento / module-catalog / Helper / Image.php

Anda akan menemukan generik:

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

Jika Anda memahami penggunaannya, Anda akan menemukan metode dengan nama yang sama di:

magento / modul-katalog / Model / Produk / Image.php

dan di dalam file itu:

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

Nilai ini - yang perlu diatur ke 95.

Ini akan mengurangi kompresi dan artefak di situs.

Orang-orang Anda akan saya anggap harus melakukan modifikasi ini dengan mengganti kode yang digunakan - bukan dengan modifikasi file inti ini. Saya bukan pengembang Magento kalau tidak saya akan retak ....

LW71
sumber
3
Sebenarnya, mengubah nilai apa pun di Core (vendor) akan ditimpa dengan pembaruan berikutnya, sehingga mengubah file inti secara umum adalah ide yang buruk
Marcel Hauri
2

Jawabannya di sini adalah IMO yang salah. Ini bukan kualitas yang Anda harus mengubah tangan pertama , itu ukuran gambar. Mengapa?

Nah masalahnya adalah ketika mengompresi gambar untuk mendapatkan ukuran file sekecil mungkin maka tingkat kompresi adalah yang paling bermanfaat dalam mencapai tujuan itu. Yang kedua adalah dimensi gambar. Anda juga harus selalu mengompresi gambar sumber asli sebelum mengurangi ukurannya (saya belum memeriksa bagaimana Magento menangani ini) untuk mendapatkan ukuran file sebanyak mungkin sambil menjaga detail.

Pada layar retina Anda perlu 2x ukuran yang ditampilkan. Jadi untuk mendapatkan gambar yang tajam ditampilkan pada 250x250 piksel, maka gambar tersebut harus 500x500 piksel.

Jadi saya akan mulai dengan mengubah tema view.xmluntuk menggandakan ukuran yang ditampilkan. Jika gambar masih tidak terlihat bagus maka saya akan mempertimbangkan untuk meningkatkan pengaturan kualitas. Jika Anda punya waktu, Anda dapat menerapkan gambar responsif juga (jadi ukuran dua kali lipat hanya dimuat pada perangkat layar retina ).

Anda juga bisa menurunkan ukuran dengan menghapus semua data meta dari gambar, tidak yakin apakah magento melakukan itu secara default atau tidak. Ini biasanya merupakan bagian dari layanan kompresi gambar yang baik.

OZZIE
sumber
1
Terima kasih telah menjelaskan pasangan ini! Aku tahu pasti ada alasan logis untuk kecurangan gambar magento! Saya masih agak bingung tentang implementasi. Jadi, katakanlah produk saya ditampilkan pada halaman produk sebagai kotak 700px, maka saya perlu membuat gambar yang berukuran 1400px persegi, kemudian mengubah pengaturan yang sesuai dalam file view.xml ke 1400px juga? Saya telah bermain dengan ini, serta pengesampingan yang disebutkan dalam jawaban lain, tetapi kualitas selalu lebih rendah pada halaman produk daripada ketika saya mengklik gambar untuk memasuki tampilan 'diperbesar'.
Joshua Flood
@ JoshuaFlood Saya pikir gambar yang diperbesar memiliki entri sendiri dalam view.xml dengan ukuran yang lebih besar, tidak dapat mengingat dengan tepat apa kunci itu atau ukurannya
OZZIE
Jangan khawatir, saya mengurutkannya. Terima kasih atas tipnya! Tidak yakin persis apa yang melakukannya tetapi saya lupa mengganti gambar 'kecil' dengan yang berukuran dua kali lipat, jadi masalahnya bisa ada di sana.
Joshua Flood
Ini bukan jawaban yang bagus. Yang harus Anda lakukan adalah menggunakan gambar responsif dan atribut srcset - tidak hanya memberikan gambar yang lebih besar secara umum yang akan diturunkan jika diperlukan.
fritzmg
@fritzmg "tangan pertama" "Jika Anda punya waktu, Anda dapat mengimplementasikan gambar responsif juga" .. bagian mana yang menurut Anda sulit untuk dipahami?
OZZIE