За последние 24 часа нас посетили 17378 программистов и 1681 робот. Сейчас ищут 933 программиста ...

Залить прозрачные места на изображении определенным цветом

Тема в разделе "PHP для новичков", создана пользователем aprofen, 16 фев 2018.

  1. aprofen

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

    С нами с:
    24 янв 2018
    Сообщения:
    71
    Симпатии:
    5
    В общем, возникла для меня новая задача, на этот раз, по теме работы с изображениями на php.

    Задача вот в чем: нужно залить прозрачные места на изображении определенным цветом. То есть, вот картинка, контуры, внутри контуров - прозрачный фон. Вот эту прозрачность нужно сменить на какой-то цвет.

    Покопался, ничего подобного не нашел, в общем, кто покажет примерчик - буду очень благодарен!
     
  2. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Картинка в PNG?
    https://php.ru/manual/book.image.html

    1. Создаешь truecolor изображение.
    2. Заливаешь нужным цветом.
    3. Поверх неё вставляешь своё изображение.
    4. Сохраняешь.
     
  3. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Примерно так:
    PHP:
    1. <?php
    2. header ('Content-Type: image/png');
    3.  
    4. $filename = 'image.png'; //имя файла и его расположение
    5.  
    6. $size = getimagesize($filename); //получаем размер изображения
    7.  
    8. $image = imagecreatefrompng($filename); //получаем изображение для обработки
    9.  
    10. $bg = imagecreatetruecolor($size[0], $size[1]); //создаем подложку изображения
    11.  
    12. $fill = imagecolorallocate($bg, 255, 120, 5); //создаем цвет заливки
    13.  
    14. imagefill($bg, 0, 0, $fill); //заливаем фон цветом
    15.  
    16. imagecopy($bg, $image, 0, 0, 0, 0, $size[0], $size[1]); //сливаем изображения
    17.  
    18. imagepng($bg); //выводим готовое изображение на экран
    19. ?>
    Результат:
    scacascacs.jpg
     
    #3 Sergey_Tsarev, 16 фев 2018
    Последнее редактирование: 16 фев 2018
    aprofen нравится это.
  4. aprofen

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

    С нами с:
    24 янв 2018
    Сообщения:
    71
    Симпатии:
    5
  5. aprofen

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

    С нами с:
    24 янв 2018
    Сообщения:
    71
    Симпатии:
    5
    @Sergey_Tsarev еще вопрос, а как сразу после слияния изображений цвет "19,126,0" заменить на прозрачный?
     
  6. aprofen

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

    С нами с:
    24 янв 2018
    Сообщения:
    71
    Симпатии:
    5
  7. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Походу что-то интересное мутишь :)
     
  8. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    Sergey_Tsarev нравится это.
  9. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    :) в создание сайтов я пришел из индустрии дизайна. Ответственно заявляю: на PHP реализовать такое будет сложно! Хотя...