PHP GD: обрезать полигон: работает с некоторыми изображениями, с некоторыми нет - PullRequest
1 голос
/ 24 декабря 2011

Я хочу обрезать многоугольник (чтобы у меня там была прозрачная область) изображения, которое я сохранил из Google Maps Static API. Затем я создал второе изображение, сохранил его и попробовал также тот же сценарий, но с той разницей, что не было никакого эффекта / изменения на втором пробном изображении, но это то же самое изображение. Может быть, ошибка PHP? Я использую PHP 5.3.3.

<?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: 1

Изображение 2: 2

1 Ответ

0 голосов
/ 24 декабря 2011

Я нашел решение: вы должны установить для изображений и imagesavealpha настройки изображений, чтобы эта прозрачность работала. Проблема также в том, что эти изображения имеют разные биты. Рабочие изображения имели 8 бит, а неработающие - 24 бита.

imagealphablending($image2, false);
imagesavealpha($image2, true);

Этот комментарий мне очень помог: http://www.php.net/manual/en/function.imagecreatefrompng.php#47083

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...