Cách tăng chất lượng ảnh sản phẩm JPG (Magento 2)


18

Khả năng nén JPG trên Magento 2 rất mạnh, do đó chất lượng hình ảnh sản phẩm trở nên rất tệ trong chế độ xem Danh mục và Sản phẩm. Làm cách nào để thay đổi nén hình ảnh cho JPG trong Magento 2?

Câu trả lời:


15

Giải pháp này hiệu quả với tôi:

Tệp: {Nhà cung cấp} / {Mô-đun} /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>

Tệp: {Nhà cung cấp} / {Mô-đun} / Kiểu / Sản phẩm Bạn có thể đặt chất lượng thành bất cứ thứ gì bạn muốn. Sau đó xóa bộ nhớ cache hình ảnh.

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

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

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

        parent::_construct();
    }
}

đường dẫn để đặt tệp này trong chủ đề tùy chỉnh của bạn là gì? tôi không thể tìm ra cấu trúc nộp M2s. M1 thật dễ dàng hơn nhiều
styzzz 20/07/17

Trong ứng dụng / mã / {Nhà cung cấp} / {Mô-đun}
Papamike

Nhưng sẽ không bị ghi đè trong quá trình nâng cấp? Tôi nghĩ bạn sẽ phải đặt nó trong chủ đề của bạn. Không?
styzzz

1
Không, thư mục {Vendor} phải được thay thế bằng không gian tên của bạn (ví dụ có thể là styzzz). Nó sẽ không bị ghi đè. Vd: / app / code / styzzz / ImageCompression / ...
Papamike

Nếu bạn có hình ảnh PNG cho sản phẩm, mức độ nén được mã hóa cứng trong bộ điều hợp GD2: vendor/magento/framework/Image/Adapter/Gd2.php:167đến 9 (tối đa)
Franck Garnier

5

Đối với Magento 2.3.2, có thể đặt chất lượng hình ảnh mà không cần thay đổi mã:

Cửa hàng> Cấu hình> Nâng cao> Hệ thống> Cấu hình tải lên hình ảnh> Chất lượng> 100

Đường dẫn cấu hình XML là:

system/upload_configuration/jpeg_quality

Điều này không cung cấp một câu trả lời cho câu hỏi. Một khi bạn có đủ danh tiếng, bạn sẽ có thể nhận xét về bất kỳ bài đăng nào ; thay vào đó, cung cấp câu trả lời không yêu cầu làm rõ từ người hỏi . - Từ đánh giá
Jai

1
"Làm cách nào tôi có thể thay đổi nén hình ảnh cho JPG trong Magento 2" ... Đây không phải là câu hỏi?
K Vij

tốt hơn so với các câu trả lời khác vì không yêu cầu thay đổi mã
Barry

2

bên trong - nhà cung cấp / magento / mô-đun danh mục / Người trợ giúp / Image.php

Bạn sẽ tìm thấy chung chung:

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

Nếu bạn grep cho việc sử dụng nó, bạn sẽ tìm thấy một phương thức cùng tên trong:

magento / mô-đun-catalog / Model / Sản phẩm / Image.php

và bên trong tập tin đó:

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

Đó là giá trị này - cần đặt thành 95.

Điều này sẽ làm giảm sức nén và đồ tạo tác trong trang web.

Những người của bạn tôi sẽ giả sử phải thực hiện sửa đổi này với ghi đè mã được triển khai phù hợp - tức là không phải bằng cách sửa đổi tệp cốt lõi này. Tôi không phải là nhà phát triển magento nếu không tôi sẽ có một vết nứt ....


3
Trên thực tế, việc thay đổi bất kỳ giá trị nào trong Lõi (nhà cung cấp) sẽ được ghi đè bằng bản cập nhật tiếp theo, do đó, việc thay đổi các tệp lõi nói chung là một ý tưởng tồi
Marcel Hauri

2

Các câu trả lời ở đây là IMO khá sai. Nó không phải là chất lượng mà bạn nên thay đổi tay đầu tiên , đó là kích thước của hình ảnh. Tại sao?

Điều quan trọng là khi nén một hình ảnh để có kích thước tệp nhỏ nhất có thể thì tốc độ nén là có lợi nhất trong việc đạt được mục tiêu đó. Cái thứ hai là kích thước của hình ảnh. Ngoài ra, bạn phải luôn nén hình ảnh nguồn gốc trước khi thu nhỏ nó (Tôi chưa kiểm tra cách magento xử lý việc này) để giảm kích thước tệp càng nhiều càng tốt trong khi bảo quản chi tiết.

Trên màn hình võng mạc, bạn cần gấp đôi kích thước hiển thị. Vì vậy, để có được hình ảnh sắc nét hiển thị ở 250x250 pixel, thì hình ảnh cần phải là 500x500 pixel.

Vì vậy, tôi bắt đầu với việc thay đổi chủ đề view.xmlđể tăng gấp đôi kích thước được hiển thị. Nếu hình ảnh vẫn không đẹp thì tôi sẽ xem xét nâng cao cài đặt chất lượng. Nếu bạn có thời gian, bạn cũng có thể triển khai hình ảnh phản hồi (vì vậy kích thước nhân đôi chỉ được tải trên các thiết bị màn hình võng mạc ).

Bạn cũng có thể giảm kích thước bằng cách xóa tất cả dữ liệu meta khỏi hình ảnh, không chắc chắn liệu magento có làm điều đó theo mặc định hay không. Nó thường là một phần của dịch vụ nén hình ảnh tốt.


1
Cảm ơn bạn đã giải thích người bạn đời này! Tôi biết rằng phải có một lý do hợp lý cho tính năng tomfoolery của magento! Tôi vẫn còn một chút bối rối về việc thực hiện mặc dù. Vì vậy, giả sử các sản phẩm của tôi đang hiển thị trên trang sản phẩm dưới dạng hình vuông 700px, sau đó tôi có cần tạo một hình ảnh có kích thước 1400px vuông, sau đó thay đổi cài đặt tương ứng trong tệp view.xml thành 1400px không? Tôi đã chơi với điều này, cũng như ghi đè được đề cập trong các câu trả lời khác, nhưng chất lượng luôn thấp hơn trên trang sản phẩm so với khi tôi nhấp vào hình ảnh để vào chế độ xem 'phóng to'.
Joshua Lũ

@JoshuaFlood Tôi nghĩ rằng hình ảnh được phóng to có mục riêng của nó trong view.xml với kích thước lớn hơn, không thể nhớ chính xác nó có khóa nào hoặc kích thước của nó là gì
OZZIE

Không phải lo lắng tôi đã sắp xếp nó. Cảm ơn vì tiền hỗ trợ! Không chắc chắn chính xác những gì đã làm nhưng tôi đã quên thay thế những hình ảnh 'nhỏ' bằng những hình ảnh có kích thước gấp đôi, vì vậy vấn đề có thể ở đó.
Joshua Lũ

Đây không phải là một câu trả lời tốt. Những gì bạn nên làm là sử dụng hình ảnh phản hồi và thuộc tính srcset - không chỉ cung cấp một hình ảnh lớn hơn nói chung sẽ bị hạ thấp bất cứ khi nào cần thiết.
fritzmg

@fritzmg "tay đầu tiên" "Nếu bạn có thời gian, bạn cũng có thể triển khai hình ảnh phản hồi" .. phần nào bạn cảm thấy khó hiểu?
OZZIE
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.