Ответы пользователя по тегу PHP
  • Как спарсить png?

    NibiruanChild
    @NibiruanChild
    Может не совсем понял задачу, но если там всего одна картинка, она всегда в PNG, то почему бы не прогнать $xml через preg_match по регулярке /site\.ru\/[a-zA-Z0-9]+.png/

    if (preg_match("/site\.ru\/[a-zA-Z0-9]+.png/", $xml, $matches) {
        $image = $matches[0];
    } else {
        echo "Изображение по шаблону не найдено";
    }
    Ответ написан
    1 комментарий
  • Как сделать картинку из текста, вписанного в прямоуголник на PHP?

    NibiruanChild
    @NibiruanChild Автор вопроса
    Кодер из меня тот-еще, но вроде 2 задача выполнена. Вдруг кому понадобится:

    function wordWrapAnnotation($image, $draw, $text, $maxWidth)
    {
        $words = preg_split('%\s%', $text, -1, PREG_SPLIT_NO_EMPTY);
        $lines = array();
        $i = 0;
        $lineHeight = 0;
        while (count($words) > 0)
        {
            $metrics = $image->queryFontMetrics($draw, implode(' ', array_slice($words, 0, ++$i)));
            $lineHeight = max($metrics['textHeight'], $lineHeight);
    
            if ($metrics['textWidth'] > $maxWidth or count($words) < $i)
            {
                $lines[] = implode(' ', array_slice($words, 0, --$i));
                $words = array_slice($words, $i);
                $i = 0;
            }
        }
    
        return array($lines, $lineHeight);
    }
    
    function createImageFromText($text){
    
        $maxWidth = 900;
        $font = 'BookmanOld.ttf';
        $fontSize = 34;
        $filename = 'res.png';
        $padding = 10;
    
        /* Create a new Imagick object */
        $image = new Imagick();
        $image->newImage(1, 1, 'white'); // none = transparent
        $image->setImageFormat("png");
    
        /* Create an ImagickDraw object */
        $draw = new ImagickDraw();
    
        /* Set the font */
        $draw->setFont($font);
        $draw->setFontSize($fontSize);
    
        list($lines, $lineHeight) = wordWrapAnnotation($image, $draw, $text, $maxWidth);
        $image->newImage($maxWidth+$padding, $padding+ count($lines)*$lineHeight, 'none'); // none = transparent    
    
        for($i = 0; $i < count($lines); $i++)
            $image->annotateImage($draw, $padding, + ($i+1)*$lineHeight, 0, $lines[$i]);
    
        //$image->writeImage($filename);
        return $image;
        
    }
    
    createImageFromText('бла бла бла текст абракадабрматьеезаногу')->writeImage('res.png');
    Ответ написан
    1 комментарий