dak Manual

PNG 24bitの透過部分が、合成すると有効にならない

ID:36|PHP画像合成

PNG 24bitの透過部分が、PHPで合成するとなぜか透過部分が無効となる。

imagealphablending($image, false);
imagesavealpha($image, true);
$color = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $color);

を試すが、解決しなかった。うーん。

>追記
合成の背景が8bitだったのでできなかっただけ。
背景も24bitにすることで解決。
ただ背景24bitで合成画像8bitはできたので、逆もできるような気もする。また後日・・・・。

>追記
文字を合成したときに、色が再現されない問題が。

imagecreate()をimagecreatetruecolor() に変更することで問題は一応解決。

本家PHPマニュアルにも
「imagecreatetruecolor() を使うことを推奨します。」と書かれている。

imagecolorallocate() をコールしたときにimagecreate()でセットした背景色がセットされるらしいが、その時にimagecreate()だと上手くいかないらしい。
PHPのバージョンによっては使えないので要注意。

詳しくは本家PHPマニュアルへ
http://www.php.net/manual/ja/function.imagecreate.php

Copyright DESIGNALIKIE, Limited. All Rights Reserved.