【问题标题】:Is there PNG compression in ImageResizer like tinypng.org?ImageResizer 中是否有 PNG 压缩,例如 tinypng.org?
【发布时间】:2013-10-31 15:01:09
【问题描述】:

我有这个项目,它显示了大量的透明 png。我使用 Cloudfront 和 ImageResizer 来提供我的图像:

media.mysite.com/Images/imageA.png;w=170

现在这是我的泡菜。

imageA.png 为 ~220kb --> tinypng.org --> ~87kb / ~62% 减少

我可以访问这样的 png“压缩”库,但问题是 ImageResizer 将大小恢复到完整(不压缩)

imageA.png;w=170 为 ~90kb --> tinypng.org --> ~20kb / ~62% 减少

因此,即使我通过 tinypng.org 运行 imageA.png,然后应用 ImageResizer 调整大小,我也会放松 png 压缩。最后,这使我的页面变得沉重。

(我确实考虑过一种解决方法来异步加载我的图像。)

所以我想知道 ImageResizer 是否可以“即时”进行此 png 压缩?

我正在阅读有关 http://imageresizing.net/plugins/prettygifs 的信息,但我不确定我是否了解它的工作原理。

谢谢!

【问题讨论】:

    标签: imageresizer


    【解决方案1】:

    这似乎与PNG Compression and ImageResizer 重复。

    总而言之——PNG 编码与 Jpeg 编码完全不同。

    完全优化 PNG 文件的编码需要大量时间和内存。您无法在不解码和重新编码的情况下调整图像大小。 ImageResizer 更喜欢以较大的文件大小快速(约 100-250 毫秒)将图像返回给您,而不是花费 5-15 秒并使用所有服务器的 RAM 来生成较小的 PNG。考虑 tinypng.org 需要多长时间来优化您的图像。您是否可以在您的网站上实时处理这种延迟?

    ImageResizer 提供 WebP,它可以为您提供比 PNG 更好的速度/大小平衡。

    基本上,在预先优化的 PNG sprite 上使用 ImageResizer 不会对文件大小有太多好处。

    【讨论】:

    • 我查看了 tinypng 花费的时间,我认为您是对的,加载我的页面需要很长时间。我会看看 WebP 看看我是否可以使用它以及我得到什么尺寸。最后,我想我总是可以预处理我的图像。感谢您花时间解释!
    • 是的……但是……这就是缓存插件的用途。不是每个人都有一百万张图片需要调整到 100 种不同的尺寸。我有 50 张图片,每张可能有 5 种尺寸 - 并且可以轻松缓存。 tinypng.org 结果正是我正在寻找的
    • HTTP 请求超时。缓存不能修复多秒请求。对于多秒处理,您需要队列和工作系统,而不是动态系统。
    • 我发现了一个 .net 项目 Nquant,它与命令行中的 tinypng 基本相同。我正在考虑将其合并到插件中(可能仍然如此)。但是我不得不说我很惊讶即使是小图像也需要多长时间才能减少颜色,所以我认为你正在做某事;-)
    【解决方案2】:

    这个插件很适合我

    https://github.com/svenrog/ImageResizer.Plugins.PngOptimizer

    只需构建它(我在 nuget 上找不到它)并将以下内容添加到 web.config<plugins> 部分

        <add name="PngOptimizer" />
    

    然后将&amp;optimized=1 添加到您的网址参数中。

    确保您使用的是某种缓存 - Amazon cloudfront 效果最好,因为您可以将其指向您的网站并提供任何缓存的文件。

    重要提示:示例中有错字,应该是optimized=1 而不是optimize=1

    【讨论】:

      猜你喜欢
      • 2012-08-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      相关资源
      最近更新 更多