Magento resize() 图像质量:脏白色背景

2023-11-27

我有一位客户对其产品缩略图在 Magento 上的呈现方式非常不满意。

这种狡猾的外观在两个方面很明显:

  • 有一个肮脏的白色背景,有非常浅灰色的水平线
  • 其次,颜色损失非常轻微(失去对比度和饱和度)。

我已经删除了所有压缩,将所有质量设置为 100%,刷新图像缓存,进行了数十次实验、破坏和修复,但似乎没有任何效果。

这个版本的 Magento 是 ver. 1.4.2.0

这里有人遇到同样的问题吗?如果有的话,你解决了吗?


该问题与 lib/Varien/Image/Adapter/Gd2.php 内的调整大小函数中的 php 函数 imagecopyresampled 有关,在平滑调整大小的图像时会出现一些舍入问题。

我的解决方案是在调整图像大小后将图像中任何非常浅的灰色像素更改为纯白色。为此,首先将 lib/Varien/Image/Adapter/Gd2.php 复制到 app/code/local/Varien/Image/Adapter/Gd2.php

接下来在 resize 函数中找到以下代码(第 312 行左右)

// resample source image and copy it into new frame
imagecopyresampled(
    $newImage,
    $this->_imageHandler,
    $dstX, $dstY,
    $srcX, $srcY,
    $dstWidth, $dstHeight,
    $this->_imageSrcWidth, $this->_imageSrcHeight
);

然后在下面添加以下代码:

// Clean noise on white background images
if ($isTrueColor) {
    $colorWhite = imagecolorallocate($newImage,255,255,255);
    $processHeight = $dstHeight+$dstY;
    $processWidth = $dstWidth+$dstX;
    //Travel y axis
    for($y=$dstY; $y<($processHeight); ++$y){
        // Travel x axis
        for($x=$dstX; $x<($processWidth); ++$x){
            // Change pixel color
            $colorat=imagecolorat($newImage, $x, $y);
            $r = ($colorat >> 16) & 0xFF;
            $g = ($colorat >> 8) & 0xFF;
            $b = $colorat & 0xFF;
            if(($r==253 && $g == 253 && $b ==253) || ($r==254 && $g == 254 && $b ==254)) {
                imagesetpixel($newImage, $x, $y, $colorWhite);
            }
        }
    }
}

从 Magento 的缓存管理中刷新图像缓存,您应该可以为新显示器提供更好的图像。实现此操作时需要注意的事项很少,第一次再次生成图像时性能会受到很小的影响,并且带有阴影的图像可能具有更清晰的边缘,因为非常浅的灰色已被删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Magento resize() 图像质量:脏白色背景 的相关文章

  • Magento - 没有新闻通讯订阅和取消订阅事件

    为什么在客户或新闻通讯模块中的新闻通讯订阅 取消订阅过程中或周围没有调度任何事件 我目前面临的唯一选择是使用订阅者模型的重写来适应这里的一些代码 有没有其他人有一个好的替代方案 或者我错过了什么 我遇到了需要监听订阅 取消订阅事件的情况 我
  • 如何在magento中添加自定义模块

    您好 我想为页脚创建一个自定义模块 用于显示新闻标题 还没有使用自定义模块 我该怎么做 谁能告诉我创建自定义模块的简单步骤 Thanks 您会发现的最佳资源是 模块创建器扩展 http www magentocommerce com ext
  • 如何在 Magento 中更改订单起始编号

    有没有办法在 Magento 中更改订单起始编号而不更改已有的订单号 我只想为所有新订单设置 170000xxxx Thanks Look in eav entity store并找到increment last id 更新此号码 确保en
  • Magento 1.7.0.0 上的 SOAP V2 url 是什么

    1 7 0 0 版本中访问 Magento SOAP V2 的 url 是否已更改 当我尝试访问 上的服务 时http www somedomain com api v2 soap wsdl 1 http www somedomain co
  • 如何更改客户 ID 和订单 ID?

    当前 CustomerID 从 1 开始 而生成的第一个订单已OrderID 100000001 有什么方法可以改变这些字段 所以创建的第一个客户已经 顾客号码900000001并且创建的第一个订单有OrderID 900000001 通过
  • 使用 getCollection 和 addLevelFilter 列出 Magento 类别,但排除默认根类别

    我使用以下代码来获取集合并使用 addLevelFilter 2 在级别上进行过滤 这会完美地输出第 2 级的所有类别 除了它还会提取列表中的默认根类别之外 我想从视图中排除它 但在查看了所有可用的方法后 我没有看到任何可以帮助我删除 排除
  • 在不破坏寻呼机的情况下获取第一个集合项

    我之前发布了一个关于此问题的问题 但我现在有了更多信息 我认为最好发布一个新问题而不是修改 抱歉 如果这不是正确的协议 你可以找到我原来的问题here https stackoverflow com questions 6311646 ma
  • 马根托。将块插入另一个块而不更改模板代码

    我尝试寻找解决方案但没有结果 我的任务是编写模块 它应该将一些 html 插入现有块中 我注意到 当我使用布局 xml 文件时 我可以将我的块插入到一些参考中 例如
  • 使用 jQuery 获取视频的 Vimeo 缩略图

    我发现了类似的问题 但没有一个答案清楚 轻松地显示如何使用 jQuery 和 JSON 获取 vimeo 视频的缩略图 如果有人可以提供帮助 那就太好了 这就是我所得到的 但目前什么也没有显示 var vimeoVideoID 176315
  • Magento:两种基于重量的统一运费

    尝试按如下方式设置我的运费 如果购物车总重量低于 1 公斤 则运费为 3 68 英镑 如果购物车总重量超过 1 公斤 则运费为 6 68 英镑 如果购物车总价超过 100 英镑 则免运费 我设法使用 6 68 英镑的统一费率将所有这些结合在
  • 在 Magento 中添加自定义折扣订单总计不会更改销售税

    我创建了一个自定义订单总额 在某些情况下会提供折扣 总计总是正确的 但是销售税计算在计算时没有考虑我的折扣 因此 如果我提供 10 美元的折扣 则销售税金额是根据折扣前的全部金额计算的 以下面为例 Subtotal 856 49 Multi
  • Magento - 分页生成错误的 URL

    除了网址之外 我的分页工作正常 第 2 页的链接是 example com products 21p 2 什么时候应该是 example com products p 2 当我在地址栏中输入后者时 它工作正常 这是生成链接的代码 li a
  • 在 Magento 中获取过去 24 小时内的订单商品

    我正在尝试获取过去 24 小时内的所有订单商品 我已锁定查询 因此它返回了我需要的内容 order id 和created on 值 order items Mage getResourceModel sales order item co
  • Magento:每个订单限制类别中的 3 个产品

    我正在尝试在 Magento 中设置一个示例产品类别 允许人们每次购买时最多选择 3 个免费样品 但如何限制每个订单仅从该类别中选择 3 个样品 EDIT 这是 app code local MagePal LimitCartProduct
  • Magento 2 REST API 客户自定义属性

    Magento 2 REST API 文档解释了在更新或创建客户时设置custom attributes 的方法 http devdocs magento com swagger index 20 html http devdocs mag
  • isSaleable() 和 isAvailable() 有什么区别?

    我正在我的 Magento 主题的 单个 产品页面上显示库存可用性 但有些事情我并不完全理解 我看到模板中使用了两种方法来检查产品是否可供销售 Mage Catalog Model Product isAvailable Mage Cata
  • 过滤两个类别的产品集合 Magento 1.7

    我想要获取包含 A 类或 B 类产品的产品集合 我已经能够使用以下 php 代码成功获取这些产品 collection Mage getModel catalog product gt getCollection gt joinField
  • 如何在 magento 的左侧栏中显示最新、评价最高和最好的产品

    我正在使用 Magento 版本 1 5 0 1 在主页中 我使用了 2 列和左栏 我想逐一展示最新的 评价最高的和最好的产品 请帮助我如何做到这一点 我是magento新手请帮助我 在您的 app design frontend your
  • Magento补丁安装失败

    从以下位置下载并运行 Magento PHP 5 4 支持补丁 Magento CE v1 7 0 0 1 7 0 2 时http www magentocommerce com download http www magentocomme
  • Magento --“SQLSTATE[23000]:违反完整性约束..”客户更新

    迁移服务器后 每次尝试更新客户信息时都会出现错误 我正在使用一个客户激活插件 http www magentocommerce com magento connect vinai extension 489 customer activat

随机推荐

  • 在 Docker Jupyter Notebook 的 GUI 中显示卷文件

    我使用 Docker 运行 Jupyter Notebook 并尝试将本地目录安装到预期的 Docker 卷上 但我无法在 Jupyter 笔记本中看到我的文件 Docker 命令是 sudo nvidia docker create v
  • C 编译错误:程序中出现杂散“\200”,并且在数字常量之前出现预期“)”

    我复制了这个程序 但在使用 void downFrequency 函数时遇到了问题 我认为 这是为了Arduino Uno 以下是编译器错误 为 Arduino Uno 编译 MY dds MY dds ino stray 342 in p
  • 具有本机依赖项和复制文件的 Maven 项目

    我有以下场景 mylib 是一个库 我有其源代码 因此我想将它们放入 Maven 项目 mylib mylib 中 这个库有一个 jar 依赖项 我只有 jar 并且在 Maven 存储库中找不到它 而且我也不想在那里安装它 为了使其编译
  • python 字典更新差异

    python 是否有任何内置功能来通知字典更新时哪些字典元素发生了变化 例如 我正在寻找这样的功能 gt gt gt a a hamburger b fries c coke gt gt gt b b fries c pepsi d ice
  • 禁用硬件键 Android ROM

    我想禁用我的自定义 AOSP ROM 中的主页 菜单和后退按钮 我在互联网上搜索过 发现在 out target product generic system usr keylayout 中找到的按键布局文件成功构建后 我可以禁用按钮 我正
  • Eclipse:添加 javadoc

    我通常如何在 eclipse 中为不同的包添加 javadoc 举个例子 我想在 eclipse 中添加 hibernate 的所有 javadoc 但我不知道如何 我读过这篇文章如何在 Eclipse 中添加 hibernate java
  • 按字典顺序对 2d numpy 数组进行排序

    我有一个包含数百列的大型二维数组 我想按字典顺序对其进行排序 即按第一列 然后按第二列 依此类推 直到最后一列 我想这应该很容易做到 但我还没有找到一种快速的方法来做到这一点 这是什么numpy lexsort是的 但是界面很尴尬 向其传递
  • 查找数组中三个多数元素的算法

    假设一个未排序的数组中有三个元素 所有元素出现的次数都超过元素总数的四分之一 找到这些元素最有效的方法是什么 对于这个问题的非在线和在线版本 谢谢你 Edit 我指的非在线版本是 这个数组是完整指定的 在线版本意味着数组元素一次出现一个 我
  • libuv 对 uv_loop_new 的未定义引用

    编译后 我尝试运行libuv示例程序 include
  • 在 Heroku 上禁用 irb 自动完成

    后续行动禁用 irb 自动完成 我想在 Heroku 上禁用 IRB 例如有一个 irbrc with IRB conf USE AUTOCOMPLETE false 在我的 heroku dyno server 的主目录中 我该怎么做 如
  • python3用单反斜杠替换双反斜杠[重复]

    这个问题在这里已经有答案了 我需要更换 with 在python3中是一个复杂的字符串 我知道这个问题已经被问过好几次了 但大多数时候都是针对简单的字符串 因此没有一个 接受的 答案真正适用于复杂的字符串 这也是不同的 from this
  • 如何通过在运行时选择单元测试来运行 CPPUnit 中的单元测试子集?

    我使用 CppUnit 作为单元测试框架 是否可以选择测试用例的子集在运行时执行 CppUnit 中是否提供了过滤选项来适应这种情况 您可能在 main 中调用的 TestRunner run 方法实际上具有可选参数 run std str
  • Javascript正则表达式-exec无限循环

    我正在尝试使用正则表达式获取链接文本 可能有几个链接可能与该模式匹配 我想获得最远的一个直到第四个 这是我的JS代码 var level 1 while match a href a
  • excel中24小时以上的时间表示

    有没有办法在 Excel 中表示时间值 其中小时数可以为 24 及以上 例如 第二天凌晨 1 点的时间为 25 00 00 公共交通调度中的常见表示 它不能只是纯文本 因为我希望能够对它们执行计算 例如平均值 标准差 或绘制图表 情况已经是
  • 为什么这个主要测试这么慢?

    这段代码取自 Haskell Road to Logic Math andProgramming 一书 它实现了埃拉托斯特尼筛法并解决了欧拉计划问题 10 sieve Integer gt Integer sieve 0 xs sieve
  • 矢量作为 C++ 中的数据成员

    在 C 中 如何将 101 个元素向量作为数据成员包含在我的类中 我正在执行以下操作 但它似乎不起作用 private std vector lt bool gt integers 101 我已经包含了矢量标头 提前致谢 class myC
  • 将数组分割成块

    假设我有一个如下所示的 Javascript 数组 Element 1 Element 2 Element 3 with close to a hundred elements 什么方法适合将数组分成许多更小的数组 比如说最多 10 个元素
  • JavaScript/jQuery VIN 验证器

    有人创建过 VIN 验证器吗 我正在尝试创建一个文本框 用户将在其中输入车辆识别号 然后 JS jQuery 将验证其是否正确 以防用户输入错误的数字 我对 JS jQuery 很陌生 并且找到了一些示例 但当然无法让它们正常工作 任何有任
  • string::c_str 查询

    调用 string c str 返回的指针指向哪里 在下面的代码片段中 我以为我会给出分段错误 但它给了我正确的输出 如果 string c str 返回的指针指向字符串对象内的内部位置 那么当函数返回并调用对象析构函数时 我应该获得无效的
  • Magento resize() 图像质量:脏白色背景

    我有一位客户对其产品缩略图在 Magento 上的呈现方式非常不满意 这种狡猾的外观在两个方面很明显 有一个肮脏的白色背景 有非常浅灰色的水平线 其次 颜色损失非常轻微 失去对比度和饱和度 我已经删除了所有压缩 将所有质量设置为 100 刷