【问题标题】:Converting the Alpha in RGBA to CSS Opacity将 RGBA 中的 Alpha 转换为 CSS 不透明度
【发布时间】:2012-07-08 18:34:47
【问题描述】:

我正在尝试从 RGBA 获取透明度并将其转换为 CSS 不透明度。

所以在得到一个图像像素的 RGBA 之后,使用以下方法:

$rgb = imagecolorat($img, $j, $i);
$colors = imagecolorsforindex($img, $rgb);
// Printing colors, I get
// 255,255,255,127
// 249,161,66,126
//...

由于某种原因,透明度始终是整数(即 127)而不是十进制数。但我想将那个 127 数字转换为我可以在 CSS 中使用的东西:

opacity:0;filter:alpha(opacity=0)

但是,我无法弄清楚 RGBA 中的 alpha 与如何将其转换为 CSS 不透明度之间的联系。

我将对来自不同类型图像的各种像素进行此操作。 PNG、JPG、GIF

有什么想法吗?

【问题讨论】:

    标签: php css image


    【解决方案1】:

    opacity = (127 - transparency) / 127.0

    【讨论】:

    • 这个 only 有效,因为 GD 函数已损坏并且正在丢失一位分辨率(即使用 0..127 而不是 0..255)
    【解决方案2】:

    不透明度与透明度相反。

    给定透明度范围 0 .. 255:

    opacity = (255 - transparency) / 255.0 
    

    如果您的最大值不同,只需将两次出现的 255 替换为该值即可。

    【讨论】:

    • 这只会给你一半的透明度,因为 rgba 格式的透明度值的最大值为 127
    • @slash197 是对的,我对其进行了测试,它提供了一半的透明度。无论如何要解决这个问题?
    • @slash197 在哪个系统中您的最大值为 127?在我使用的每一个 RGBA 系统中,透明度都达到了 255。
    • @slash197 啊 - PHP/GD 失败。在适当的 32 位 RGBA 空间中,alpha应该在 0 到 255 之间。
    • @Alnitak 我知道,这很奇怪
    猜你喜欢
    • 2021-02-13
    • 2023-03-02
    • 1970-01-01
    • 2012-06-11
    • 2012-12-24
    • 1970-01-01
    • 2011-05-10
    • 2013-09-29
    • 2012-11-03
    相关资源
    最近更新 更多