Я хочу вырезать многоугольник (у меня есть прозрачная область) изображения, которое я сохранил из Google Maps Static API. Затем я создал второе изображение, сохранил его и попробовал также тот же скрипт, но с той разницей, что на втором запрошенном изображении не было эффекта/изменения, но это одно и то же изображение. Может быть, ошибка 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:
С [учебное пособие] (http://www.php.net/manual/en/function.imagecolorallocatealpha.php) «* альфа *: значение от 0 до 127. 0 указывает на полностью непрозрачный, а 127 - полностью прозрачный ». Таким образом, вы рисуете полностью прозрачный полигон, и вы видите это через него? Похоже, он работает по назначению. –
Он должен заменить этот полигон прозрачностью. Первые примеры также правильны, вот результат работы первого изображения: http://i.imgur.com/91Ska.png – Poru
Рисование с прозрачным полигоном не заменяет область, которую вы рисуете, но композиция основного изображения с цветом многоугольника, в соответствии с альфа-значением. Если вы видите сплошной цвет с кодом, который вы указали выше, я предполагаю, что вы пишете изображение, на котором не включено смешение. Попробуйте вызвать 'imagealphablending ($ image, TRUE)' и 'imagealphablending ($ image2, TRUE)', и я уверен, вы обнаружите, что получите те же результаты. –