如何提高产品照片JPG的质量(Magento 2)


Answers:


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>

文件:{供应商} / {模块} /型号/产品您可以将质量设置为所需的任何值。然后刷新图像缓存。

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

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

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

        parent::_construct();
    }
}

将此文件放入自定义主题的路径是什么?我无法弄清楚M2的归档结构。M1轻松得多
-styzzz

在应用程式/程式码/ {供应商} / {模组}中
Papamike

但是在升级过程中不会被覆盖吗?我认为您必须将其放在主题中。没有?
styzzz

1
不可以,{Vendor}文件夹必须由您的名称空间替换(例如可以是styzzz)。它不会被覆盖。例如:/ app / code / styzzz / ImageCompression / ...
Papamike

如果您有产品的PNG图像,则压缩级别在GD2适配器中进行硬编码:设置vendor/magento/framework/Image/Adapter/Gd2.php:167为9(最大值)
Franck Garnier

5

至于Magento 2.3.2,可以在不更改代码的情况下设置图像质量:

商店>配置>高级>系统>图像上传配置>质量> 100

XML配置路径为:

system/upload_configuration/jpeg_quality

这不能为问题提供答案。一旦您拥有足够的声誉,您就可以在任何帖子中发表评论;相反,请提供不需要问询者澄清的答案。- 评分

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 /模块目录/模型/产品/Image.php

在该文件中:

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

该值-需要设置为95。

这将减少现场的压缩和伪影。

我认为你们需要用适当部署的代码覆盖进行此修改-即不必通过对该核心文件进行修改。我不是magento开发人员,否则我会有裂痕。


3
实际上,更改内核(供应商)中的任何值都将在下一次更新时被覆盖,因此更改内核文件通常是一个坏主意
Marcel Hauri

2

答案是错误的IMO。这不是你应该改变质量的第一手资料,这是图像的大小。为什么?

好吧,当压缩图像以使文件最小时,压缩率对于实现该目标最为有益。第二个是图像的尺寸。同样,您应该始终在缩小原始源图像之前对其进行压缩(我没有检查过magento的处理方式),以便在保留细节的同时尽可能减小文件大小。

在视网膜屏幕上,您需要显示尺寸的2倍。因此,为了获得以250x250像素显示的清晰图像,则图像需要为500x500像素。

因此,我将从更改主题view.xml以使显示的大小增加一倍开始。如果图像仍然看起来不佳,那么我会考虑提高质量设置。如果有时间,您也可以实现响应式图像(因此,仅在视网膜屏幕设备上加载了两倍大小的图像)。

您也可以通过从图像中删除所有元数据来减小尺寸,不确定magento是否默认执行该操作。它通常是良好的图像压缩服务的一部分。


1
感谢您向这位伴侣解释!我知道magento的图像伪造一定是有逻辑的!我仍然对实现有些困惑。因此,假设我的产品在产品页面上以700像素见方显示,那么我需要创建一个1400像素见方的图像,然后将view.xml文件中的相应设置也更改为1400像素吗?我一直在玩这个游戏,以及其他答案中提到的替代游戏,但是产品页面上的质量始终低于单击图像进入“缩放”视图时的质量。
约书亚洪水

@JoshuaFlood我认为缩放后的图像在view.xml中具有它自己的条目,具有更大的尺寸,无法确切记住它具有什么键或它的尺寸
OZZIE

不用担心,我对它进行了排序。谢谢你的提示!不知道到底是什么原因,但是我忘了用双倍尺寸的“小”图像代替,所以问题可能就在那里。
约书亚洪水

这不是一个好答案。您应该做的是使用响应图像和srcset属性-不仅要提供通常会在必要时缩小尺寸的较大图像。
fritzmg

@fritzmg“第一手”“如果您有时间也可以实现响应式图像” ..您觉得哪一部分难以理解?
OZZIE
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.