【问题标题】:imagecopyresampled in php - premultiplied alpha issuephp中的imagecopyresampled - 预乘alpha问题
【发布时间】:2012-02-24 14:58:03
【问题描述】:

我对使用 alpha 值的缓冲区的 imagecopyresampled 有疑问。显然,该算法在过滤之前预乘了像素的 alpha 值,这会导致对象周围出现黑色边框。

重现步骤:

  • 拍摄一张在 RGB 部分完全为白色的图像,并且在 Alpha 部分的黑色背景上有一个(抗锯齿!!)白色圆圈(使用圆圈,而不是正方形!) alpha 部分将具有大部分全白和全黑像素,以及由于抗锯齿在圆的边界上的一些渐变像素 - 这意味着输入图像没有预乘 - 它是直的/无抠图的,因为图像的 RGB 部分完全是白色的)。

  • 使用 imagecopyresampled 将图像缩小一半

  • 在全白图像上合成结果

我的期望: 全白图像

我得到了什么: 圆圈的轮廓周围有一个灰色的边框

我很确定这是由于缩小算法中的预乘 alpha(该算法将像素 alpha 值与其 rgb 值相乘以计算新的 rgb 值 - 因此白色像素将变为灰色)

有人知道这个的解决方法吗?

【问题讨论】:

    标签: php image-processing alpha-transparency gd2 premultiplied-alpha


    【解决方案1】:

    我建议尝试 php 的 image magick。

    http://www.php.net/manual/en/imagick.resizeimage.php

    http://www.php.net/manual/en/imagick.scaleimage.php

    根据我的经验,所有关于在 php 中成像的麻烦都会消失。

    【讨论】:

    • 我们刚刚尝试过,但是 imagick Alpha 通道似乎完全丢失了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2021-08-01
    • 2013-03-02
    • 2015-10-07
    • 2016-04-28
    相关资源
    最近更新 更多