0

我對使用alpha值的緩衝區進行imagecopyresampled處理有問題。顯然該算法在濾波之前預先乘以像素阿爾法值,這導致黑色邊框的圓形物體。在php中imagecopyresampled - 預乘alpha處理問題

重現步驟:

  • 拍攝影像是在RGB部分全白和具有(抗鋸齒!!)白色圓圈(去轉了一圈,沒有與方!)上黑色的背景(所以alpha部分將有大部分完全白色和全黑色的像素,以及由於抗鋸齒在圓的邊界上的一些漸變像素 - 這意味着輸入圖像不是預乘 - 它是直線/無匹配,因爲圖像的RGB部分是完全白色的)。

  • 通過按比例縮小一半的圖像使用imagecopyresampled

  • 撰寫的結果在全白圖像

我會期待什麼: 全白圖像

我能得到什麼: 灰色邊框圍繞圓的輪廓

我很確定這是由於縮放算法中的預乘alpha(該算法將像素alpha值與其rgb值相乘以計算新的rgb值 - 因此白色像素將變爲灰色)

有沒有人知道workarround這個?

回答

0

我會建議嘗試圖像magick的PHP。

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

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

在我的經驗

關於PHP成像所有的麻煩走開。

+0

我們剛剛嘗試過,但使用imagick alpha通道似乎完全丟失 – Mat 2012-02-24 20:39:41