Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: замена цвета в изображении png на прозрачное
Форумы портала PHP.SU » » Графика в PHP » замена цвета в изображении png на прозрачное

Страниц (1): [1]
 

1. NN - 09 Ноября, 2014 - 21:57:52 - перейти к сообщению
Задача: на сервере есть изображение png, надо сделать определенный цвет (например, белый) прозрачным и результирующее изображение сохранить туда же на сервер. Написала код, однако результирующее изображение получается без прозрачности! Что делать? Может быть, эта задача неразрешима? Вот код:

<?php
$image = imagecreatefrompng('images/Overlays/S48_0100.0.png');
if($image)
{
// Осуществляем проверку корректности компонентов RBG-цвета, переданных через GET-параметры
if($_GET['red'] > 250 && $_GET['green'] > 250 && $_GET['blue'] > 250)
{
$_GET['red'] = 255; $_GET['green'] = 255; $_GET['blue'] = 255;
}
// Получаем дескриптор цвета
$color = imagecolorallocate($image,$_GET['red'],$_GET['green'],$_GET['blue']);
imagecolortransparent($image,$color);
// Выводим изображение в файл
imagepng($image,'images/proba.png');
imagedestroy($image);
}
?>

Заранее благодарна за ответ
2. dXdYdZ - 10 Ноября, 2014 - 00:16:03 - перейти к сообщению
Возможно, дело в том, что надо использовать функцию
перед

Это для того, чтобы преобразовать полноцветное изображение в изображение с палитрой.
Я увидел это вот тут: http://www[dot]softtime[dot]ru/forum/rea[dot][dot][dot]12256&page=0
3. NN - 10 Ноября, 2014 - 14:15:37 - перейти к сообщению
Спасибо за ответ, я все посмотрела, вставила функцию imagetruecolortopalette($image, true, 256) и попробовала, но ничего не изменилось - белый цвет остается непрозрачным...
Вот уже измененный код PHP:
$image = imagecreatefrompng('images/Overlays/T72_0010.0.png');
if($_GET['red'] > 200 && $_GET['green'] > 200 && $_GET['blue'] > 200)
{
$_GET['red'] = 255; $_GET['green'] = 255; $_GET['blue'] = 255;
}
$color = imagecolorallocate($image,$_GET['red'],$_GET['green'],$_GET['blue']);
imagetruecolortopalette($image, true, 256);
imagecolortransparent($image,$color);
imagepng($image,'images/proba.png'); // Выводим изображение в файл
imagedestroy($image);

Причем пробовала эту функцию ставить и до, и после функции imagecolortransparent($image,$color);

 

Powered by ExBB FM 1.0 RC1