フォーム経由でアップロードされたものに基づいて、mySQL db の内容に基づいて画像を作成する次のコードがあります。
if($bg_img){
list($img_width, $img_height, $img_type, $img_attr) = getimagesize('./images/'.$bg_img);
}
// Use image in background
$im = imagecreatefrompng(IS_DIR."/images/".$bg_img);
$fn = rgb2array($font_color);
$font_color = imagecolorallocate($im, $fn[0], $fn[1], $fn[2]);
これにより、画像が作成され、フォントの色が割り当てられ、コードの後半でテキストが追加されます。すべて正常に機能します。
しかし、奇妙な問題があります。私は2つの8ビットPNGを持っています。そのうちの 1 つはプレーンなグレーの色で、もう 1 つは実際にロゴが入ったグラフィック イメージです。基本的なものを使用すると、テキストは $font_color (DB から取得) で定義した色を問題なく使用します。よりグラフィカルなものを使用すると、色が正しくなく、imagecollorallocate が RGB 値のセットを返さないようです。
特定の種類の PNG で行う必要があることはありますか?