Google Maps Static APIから保存した画像のポリゴン(透明領域がある部分)をトリミングします。 次に、2枚目の画像を作成して保存し、同じスクリプトを試しましたが、2枚目の画像で効果は変わりませんでしたが、同じ画像です。たぶんPHPのバグ? PHP 5.3.3を使用しています。PHP GD:ポリゴンをトリミングする:一部の画像で動作するものがあります。
<?php
$image = imagecreatefrompng('map.png');
$image2 = imagecreatefrompng('map2.png');
$black = imagecolorallocatealpha($image, 0, 0, 0, 127);
$black2 = imagecolorallocatealpha($image2, 0, 0, 0, 127);
imagefilledpolygon($image, array(0,0, 20,20, 0,20), 3, $black);
imagefilledpolygon($image2, array(0,0, 20,20, 0,20), 3, $black2);
header('Content-Type: image/png');
imagepng($image);
#imagepng($image2);
?>
画像1:
画像2:
:値0は完全に不透明、127は完全に透明であることを示します。だからあなたは完全に透明なポリゴンを描いていて、それを見ているのですか?意図したとおりに動作しているように思えます。 –
このポリゴンを透明に置き換える必要があります。最初の例も正しく動作します。最初のイメージの作業結果は次のとおりです。http://i.imgur.com/91Ska.png – Poru
透明なポリゴンで描画すると、描画している領域が置き換えられることはありませんが、アルファ値に従って、ポリゴンの色で下の画像を合成します。上で書いたコードで単色が表示されている場合は、ブレンディングがオンになっていないイメージを書き込んでいると推測します。 'imagealphablending($ image、TRUE)'と 'imagealphablending($ image2、TRUE)'を呼び出すと、同じ結果が得られるはずです。 –