アルファ値を使用するバッファのimagecopyresampledに問題があります。明らかに、アルゴリズムはピクセルのアルファ値をフィルタリングする前に事前に乗算します。これにより、オブジェクトに黒い枠線が描画されます。PHPで事前生成されたアルファ版のimagecopyresampled
は、RGBの部分で完全に白である画像を撮影し、それが(アンチエイリアス!!)白い円(ない四角で、丸で行く!)にあります
再現手順アルファ部分には黒い背景が含まれています(したがって、アルファ部分はほとんど白と完全に黒のピクセルを持ち、アンチエイリアスのためにサークルの境界にある勾配ピクセルがいくつかあります。つまり、入力画像はあらかじめ乗算されていません。画像のRGB部分が完全に白であるため)。
をimagecopyresampled用いたハーフによって
スケールダウン画像は私が期待するもの、完全に白い画像
上で結果を構成する: 完全に白い画像を
私は何を得ます: 円の輪郭に灰色がかった罫線
これはスケーリングされたアルゴリズム内の事前乗算されたアルファによるものだと確信しています(このアルゴリズムはピクセルのアルファ値にそのRGB値を乗算して新しいRGB値を計算するため、白いピクセルは灰色になります)
これのためのworkarround?
私たちはそれを試しましたが、imagickではアルファチャンネルが完全に失われているようです – Mat