За последние 24 часа нас посетили 20587 программистов и 1104 робота. Сейчас ищут 422 программиста ...

Прозрачный фон (imagecreatetruecolor)

Тема в разделе "Обработка изображений средствами PHP", создана пользователем timemanager, 25 янв 2011.

  1. timemanager

    timemanager Активный пользователь

    С нами с:
    25 янв 2011
    Сообщения:
    4
    Симпатии:
    0
    Скрипт работает, картинки создаются, но на черном фоне (RGB: 0,0,0; #000000;).
    Как сделать у создаваемой картинки прозрачный фон?
    Чего уж только не перепробавано....

    Картинки создаются в цикле чтения данных из базы, где задан цвет в формате HTML (#rrggbb) и процент ($percent) закрашиваемой области круга
    PHP:
    1.  
    2. $width=100;
    3. $height=100;
    4. $percent = 65;
    5. $r = 119;
    6. $g = 235;
    7. $b = 30;
    8.  
    9. $img = imagecreatetruecolor($width, $height)
    10.                      or die('Несоздается...');
    11.  
    12. imagealphablending($img, true);
    13. imagecolortransparent($img, 0x000000);
    14. imagesavealpha($img, true); // save alphablending setting (important);
    15.  
    16. $images_path = 'created/';
    17. $color = imagecolorallocate( $img, $r, $g, $b );
    18. imagefilledarc($img, $width/2, $height/2, $width, $height,  0, 360*intval($percent)/100, $color, IMG_ARC_EDGED);
    19.  
    20. $fname = 'img1.png';
    21.  
    22. // imagecolorclosestalpha($img, 0, 0, 0, 127);
    23.  
    24. imagepng($img, $images_path . $fname );
    25.  
    Результат создания "картинки":
    [​IMG][/img]
     
  2. lucidmind

    lucidmind Активный пользователь

    С нами с:
    4 май 2011
    Сообщения:
    13
    Симпатии:
    0
    1. А если как вариант попробовать не создавать с нуля новое изображение, а рисовать круг на заранее подготовленном (имеющимся web-сервере) прозрачном png-файле (в качестве подложки так сказать).

    2. Ну или попробовать сделать прозрачным цвет вот так:

    $trcolor = ImageColorAllocate($Image, 0, 0, 0);
    ImageColorTransparent($Image , $trcolor);
     
  3. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    lucidmind, вы всё верно говорите
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    верно и верно, верно и верно... блин, надоело уже. когда же перестанете! :)))
     
  5. Shumomer

    Shumomer Активный пользователь

    С нами с:
    12 мар 2011
    Сообщения:
    194
    Симпатии:
    1
    Адрес:
    из вашего вображения
    Для пнг надо чуток не так

    PHP:
    1. <?php
    2. $width=100;
    3. $height=100;
    4. $percent = 65;
    5. $r = 119;
    6. $g = 235;
    7. $b = 30;
    8.  
    9. $img = imagecreatetruecolor($width, $height) or die('Несоздается...');
    10.  
    11. $transparent = imagecolorallocatealpha($img, 0, 0, 0, 127);
    12. imagefill($img, 0, 0, $transparent);
    13.  
    14. imagesavealpha($img, true); // save alphablending setting (important);
    15.  
    16. $images_path = 'created/';
    17. $color = imagecolorallocate( $img, $r, $g, $b );
    18. imagefilledarc($img, $width/2, $height/2, $width, $height,  0, 360*intval($percent)/100, $color, IMG_ARC_EDGED);
    19.  
    20. $fname = 'img1.png';
    21.  
    22. imagepng($img, $images_path . $fname );
    23.  
    24. ?>
    Обратите внимание на строки 11 и 12
     
    maggotik нравится это.