Задать вопрос
azidilofficial
@azidilofficial
Ученик

Почему библиотека GD не работает на новый версия?

<?php

function createTicketImage($ticketNumber, $buyerName, $buyerID) {
    // Создаем новое изображение
    $imageWidth = 600;
    $imageHeight = 400;
    $image = imagecreatetruecolor($imageWidth, $imageHeight);
    
    if (!$image) {
        echo "Не удалось создать изображение";
        return;
    }

    // Загружаем фоновое изображение
    $backgroundImagePath = 'image.png';
    $backgroundImage = imagecreatefrompng($backgroundImagePath);

    if (!$backgroundImage) {
        echo "Не удалось загрузить фоновое изображение";
        return;
    }

    // Получаем размеры фонового изображения
    $bgWidth = imagesx($backgroundImage);
    $bgHeight = imagesy($backgroundImage);

    // Масштабируем фоновое изображение
    $newBgWidth = $imageWidth;
    $newBgHeight = $imageHeight;
    $scaledBgImage = imagecreatetruecolor($newBgWidth, $newBgHeight);
    
    if (!$scaledBgImage) {
        echo "Не удалось создать масштабированное фоновое изображение";
        return;
    }

    imagecopyresampled($scaledBgImage, $backgroundImage, 0, 0, 0, 0, $newBgWidth, $newBgHeight, $bgWidth, $bgHeight);

    // Копируем масштабированное фоновое изображение на холст
    if (!imagecopy($image, $scaledBgImage, 0, 0, 0, 0, $newBgWidth, $newBgHeight)) {
        echo "Не удалось скопировать фоновое изображение";
        return;
    }

    // Задаем цвет текста
    $textColor = imagecolorallocate($image, 0,0,0);

    // Добавляем текст
    $font = 'font.otf'; // путь к файлу шрифта TrueType
    $text = "Лотерейный билет №: $ticketNumber\nДата: " . date('Y-m-d') . "\nПокупатель: $buyerName\nID Покупателя: $buyerID";
    $textX = 20;
    $textY = 20;
    $fontSize = 16;
    $angle = 0;

    // Рассчитываем размер текста
    $textBoxSize = imagettfbbox($fontSize, $angle, $font, $text);
    $textWidth = $textBoxSize[2] - $textBoxSize[0];
    $textHeight = $textBoxSize[7] - $textBoxSize[1];

    // Позиционируем текст по горизонтали и вертикали
    $textX = ($imageWidth - $textWidth) / 2;
    $textY = ($imageHeight - $textHeight) / 2 + $textHeight;

    // Добавляем текст на изображение
    if (!imagettftext($image, $fontSize, $angle, $textX, $textY, $textColor, $font, $text)) {
        echo "Не удалось добавить текст на изображение";
        return;
    }

    // Выводим изображение в поток
    header('Content-Type: image/png');
    if (!imagepng($image)) {
        echo "Не удалось вывести изображение";
        return;
    }

    // Очищаем память
    imagedestroy($image);
    imagedestroy($backgroundImage);
    imagedestroy($scaledBgImage);
}

// Пример использования:
$ticketNumber = generateTicketNumber();
$buyerName = "Иванов Иван";
$buyerID = "12345";
createTicketImage($ticketNumber, $buyerName, $buyerID);


это код работает на версия php 7.2
когда изменил версия 8.1 не работает нормально

версия 7.1 добавил текст в фото
версия 8.1 не добавляются текст в фото что может быть причиной спасибо кто помогает заранее
  • Вопрос задан
  • 69 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы