Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2016, 00:47   #1
FranCOder
Продвинутый
Пользователь
 
Аватар для FranCOder
 
Регистрация: 26.11.2013
Сообщений: 49
По умолчанию Imagettftext многоразово

Здравствуйте! Использую imagettftext чтобы написать свой текст на картинке путём заполнения полей.
Сделал только одно поле, нужно сделать ещё 2, но не знаю как сделать.
Получается сейчас текст рисуется из поля "text" - "Описание сертификата", нужно чтобы из "name" - "Имя и Фамилия" и "date - "Дата выдачи" также выводились на картинке.
Я сделал настройки для полей name и date, но мне нужно вывести текст из этих полей.
Нужно сделать до утра, сейчас у меня 03:46, буду очень благодарен!
Код:
<?php

    class ImageCreate
    {
        /**
        * @var $settings - НАСТРОЙКИ
        * src  - Путь к изображению, на которое нанесём текст
        * size - Размер шрифта
        * top  - Отступ сверху
        * left - Отступ слева
        * font - Путь к файлу шрифта
        * save - Путь для сохранения
        */

        private $settings = [
            "src"  => "./template/img/certificate.jpg",
            "size" => 24,
            "top"  => 830,
            "left" => 200,
            "font" => "fonts/arial.ttf",
            "save" => "result/"
        ];

        private $settings2 = [
            "src"  => "./template/img/certificate.jpg",
            "size" => 46,
            "top"  => 1100,
            "left" => 400,
            "font" => "fonts/arial.ttf",
            "save" => "result/"
        ];

        private $settings3 = [
            "src"  => "./template/img/certificate.jpg",
            "size" => 20,
            "top"  => 1630,
            "left" => 550,
            "font" => "fonts/arial.ttf",
            "save" => "result/"
        ];


        /**
        * 
        * @var Содержит пользовательский текст
        * 
        */
        private $text;
        
        /**
        * 
        * @param пользовательский текст $text
        * 
        */
        public function __construct($text){
            $this->text = $text;
        }
        
        /**
        *
        * @return путь к созданному изображению
        * 
        */
        public function create()
        {
            # Открываем рисунок в формате JPEG
            $img = imagecreatefromjpeg($this->settings["src"]);
            
            # Получаем идентификатор цвета
            $color = imagecolorallocate($img, 63, 41, 145);
            $color2 = imagecolorallocate($img, 255, 0, 0);
          
            /* выводим текст на изображение */
            imagettftext(
                $img, 
                $this->settings["size"], 
                0, 
                $this->settings["left"], 
                $this->settings["top"], 
                $color, 
                $this->settings["font"],
                $this->text
            );
            
            imagettftext(
                $img, 
                $this->settings2["size"], 
                0, 
                $this->settings2["left"], 
                $this->settings2["top"], 
                $color2, 
                $this->settings2["font"],
                $this->text
            );

            imagettftext(
                $img, 
                $this->settings3["size"], 
                0, 
                $this->settings3["left"], 
                $this->settings3["top"], 
                $color, 
                $this->settings3["font"],
                $this->text
            );

            # Генерируем путь для сохранения
            $path = $this->settings["save"] . microtime(true) . ".jpg";
            
            # Сохраняем рисунок в формате JPEG
            imagejpeg($img, $path, 100);
            
            # Освобождаем память и закрываем изображение
            imagedestroy($img);
            
            # Возвращаем путь
            return $path;
        }
    }
    
    # Если нажата кнопка "Получить сертификат"
    if(isset($_POST["submit"])) {
        # Если поле для текста не пусто
        if(empty($_POST["text"]))
            # Сообщение
            echo "Введите текст!";
        else {
            # Получаем объект класса наложения текста
            $image = new ImageCreate($_POST["name"]) ;
            
            # Генерируем изображение и получаем путь
            $path = $image->create();
        }
    }
?>

<!DOCTYPE html>
<html>
    <head>
       <meta charset="utf-8">
        <title>Сертификат</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="./template/css/main.css">
        <link rel="stylesheet" href="./template/css/bootstrap.min.css">
    </head>
    <body>
        <div class="container">
        <div class="main">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h3 class="panel-title">Сертификат</h3>
                </div>
                <div class="panel-body">
                <?php if(empty($path)):?>
                    <form method="post">
                        <h4>Введите имя и фамилию:</h4>
                        <input type="text" class="form-control" name="name" autofocus="autofocus" autocomplete="autocomplete" />
                        <h4>Описание сертификата:</h4>
                        <textarea class="form-control" name="text" rows="8" required="required"></textarea>
                        <h4>Дата выдачи:</h4>
                        <input type="date" class="form-control" name="date" />
                        <div class="certificate">
                        <img src="./template/img/certificate.jpg" alt="certificate" />
                        </div>
                        <button type="submit" name="submit" class="btn btn-success center-block">Получить сертификат</button>
                    </form>
                    <?php else:?>
                    <img class="result" src="<?=$path?>" />
                    <br />
                    <br />
                    <a href="<?=$path?>" class="btn btn-success" download>Скачать</a>
                    <a href="/" class="btn btn-primary">Назад</a>
                    <?php endif; ?>
                </div>
            </div>
        </div>
        </div>
        <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
        <script src="./template/js/bootstrap.min.js"></script>
    </body>
</html>
FranCOder вне форума Ответить с цитированием
Старый 23.06.2016, 07:05   #2
FranCOder
Продвинутый
Пользователь
 
Аватар для FranCOder
 
Регистрация: 26.11.2013
Сообщений: 49
По умолчанию

Сделал.
FranCOder вне форума Ответить с цитированием
Старый 27.07.2016, 17:54   #3
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

сделал и хорошо, а где решение? )
Alar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск