Скрипт работает, картинки создаются, но на черном фоне (RGB: 0,0,0; #000000. Как сделать у создаваемой картинки прозрачный фон? Чего уж только не перепробавано.... Картинки создаются в цикле чтения данных из базы, где задан цвет в формате HTML (#rrggbb) и процент ($percent) закрашиваемой области круга PHP: $width=100; $height=100; $percent = 65; $r = 119; $g = 235; $b = 30; $img = imagecreatetruecolor($width, $height) or die('Несоздается...'); imagealphablending($img, true); imagecolortransparent($img, 0x000000); imagesavealpha($img, true); // save alphablending setting (important); $images_path = 'created/'; $color = imagecolorallocate( $img, $r, $g, $b ); imagefilledarc($img, $width/2, $height/2, $width, $height, 0, 360*intval($percent)/100, $color, IMG_ARC_EDGED); $fname = 'img1.png'; // imagecolorclosestalpha($img, 0, 0, 0, 127); imagepng($img, $images_path . $fname ); imagedestroy($img); Результат создания "картинки": [/img]
1. А если как вариант попробовать не создавать с нуля новое изображение, а рисовать круг на заранее подготовленном (имеющимся web-сервере) прозрачном png-файле (в качестве подложки так сказать). 2. Ну или попробовать сделать прозрачным цвет вот так: $trcolor = ImageColorAllocate($Image, 0, 0, 0); ImageColorTransparent($Image , $trcolor);
Для пнг надо чуток не так PHP: <?php $width=100; $height=100; $percent = 65; $r = 119; $g = 235; $b = 30; $img = imagecreatetruecolor($width, $height) or die('Несоздается...'); $transparent = imagecolorallocatealpha($img, 0, 0, 0, 127); imagefill($img, 0, 0, $transparent); imagesavealpha($img, true); // save alphablending setting (important); $images_path = 'created/'; $color = imagecolorallocate( $img, $r, $g, $b ); imagefilledarc($img, $width/2, $height/2, $width, $height, 0, 360*intval($percent)/100, $color, IMG_ARC_EDGED); $fname = 'img1.png'; imagepng($img, $images_path . $fname ); imagedestroy($img); ?> Обратите внимание на строки 11 и 12