【问题标题】:How to get better transparency with GIFs?如何使用 GIF 获得更好的透明度?
【发布时间】:2010-12-29 11:18:45
【问题描述】:

是否有任何软件、插件或技术可以创建/导出具有平滑透明边缘的类似 PNG 的 GIF,至少对于子弹或按钮等较小的图像。

我有时真的不得不为 IE6 使用 GIF,所以如果知道这样的工具是否存在会很棒?

谢谢

【问题讨论】:

    标签: image png transparency gif


    【解决方案1】:

    不,GIF 格式不像 PNG 那样支持 alpha 通道透明度。您只能从 GIF 中 256 种可能的颜色中选择一种来透明。

    如果您大致知道背景将是什么颜色,那么您可以做的最好的事情是创建具有您计划使用它的相同背景的 GIF,然后将背景颜色选择为透明。平滑的边缘在特定背景下看起来很平滑,但在其他颜色下看起来很糟糕。

    【讨论】:

    • 但是,您可以通过仔细构建 GIF 以减少参差不齐的边缘来最小化效果。您还可以寻找 IE6 png 修复。
    • 你不能使用抖动来获得虚假的部分透明度吗?这对平滑边缘没有帮助,但对阴影和事物有帮助
    【解决方案2】:

    PNG 中的边缘是平滑的,因为它具有抗锯齿功能,因此具有可变的不透明度。 GIF 格式不支持这一点,所以很遗憾,没有办法做到这一点。

    【讨论】:

    • 因为 alpha 信息不是 0 或 1,而是从 0(透明)到 255(不透明)的任何值,而不是因为抗锯齿。
    【解决方案3】:

    是的,GIF 可以是透明的,只需使用 png 透明框架,当嵌入到 css 中时,它会具有透明背景。

    background: url(../images/mundog.gif) no-repeat;
    

    【讨论】:

      【解决方案4】:

      GIF 没有像 PNG 那样的 alpha 通道,因此您无法获得平滑的透明边缘。 Alpha 通道指定每个像素的透明度,例如,您可以使用半透明像素。另一方面,GIF 被限制为 8 位颜色,其中一个被指定为透明颜色。

      【讨论】:

        【解决方案5】:

        据我回忆(我已经有一段时间没有使用 GIF 了),GIF 没有可变的透明度——一个像素要么是透明的,要么是不透明的。 您可以通过与背景图像混合来模拟透明度,但这将依赖于具有静态、已定义的背景。

        【讨论】:

          【解决方案6】:

          对此的现代解决方案是使用 WebP 而不是 GIF。
          WebP 支持动画和 Alpha 通道,以及无损压缩。
          现在的浏览器是well-suported

          【讨论】:

            猜你喜欢
            • 2013-03-23
            • 2012-01-21
            • 2010-10-07
            • 1970-01-01
            • 1970-01-01
            • 2018-12-05
            • 2015-05-12
            • 1970-01-01
            • 2018-07-07
            相关资源
            最近更新 更多