Current File : /home/users/barii/public_html/finansenl.com.pl/wodki/admin/imienniki/imienniki_generuj.php
<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
</head>
<body>
<style>
    .imienniki-wzory-container {
        display: flex;
    }
    .imienniki-wzory-container img {
        width: 80px;
        height: auto;
    object-fit: contain;
    }
</style>
<?php
include('../config.php');
error_reporting(E_ALL);
ini_set('display_errors', 1);

function createImageFromAny($filepath) {
    $type = exif_imagetype($filepath); // Pobiera typ obrazu
    switch ($type) {
        case IMAGETYPE_GIF:
            return imagecreatefromgif($filepath);
        case IMAGETYPE_JPEG:
            return imagecreatefromjpeg($filepath);
        case IMAGETYPE_PNG:
        $img = imagecreatefrompng($filepath);
            imagesavealpha($img, true);
            return $img;

        case IMAGETYPE_WEBP:
            return imagecreatefromwebp($filepath);
        default:
            return false; // Typ nieobsługiwany
    }
}
function adjustFontSizeToFit($image, $initialFontSize, $text, $fontPath, $maxWidth, $maxHeight) {
    $fontSize = $initialFontSize;
    do {
        // Oblicz rozmiar obramowania tekstu przy użyciu aktualnego rozmiaru czcionki
        $bbox = imagettfbbox($fontSize, 0, $fontPath, $text);
        $textWidth = $bbox[2] - $bbox[0];
        $textHeight = $bbox[1] - $bbox[7];
        // Zmniejsz rozmiar czcionki, jeżeli tekst jest za duży
        if ($textWidth > $maxWidth || $textHeight > $maxHeight) {
            $fontSize--;
        }
    } while (($textWidth > $maxWidth || $textHeight > $maxHeight) && $fontSize > 0);

    return $fontSize;
}


if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $line1 = $_POST['line1'];
    $line2 = $_POST['line2'];
    $wzor_id = $_POST['wzor'];

    $row = $mysql->sqlRow("*", "imienniki_wzory", "WHERE id = '".$wzor_id."'");

    $filename = $row['plik'];
    $x = $row['cord_x'];
    $y = $row['cord_y'];
    $width = $row['cord_width'];
    $height = $row['cord_height'];

    // Ładowanie obrazka
    $im = createImageFromAny($filename);
    if (!$im) {
        echo "Nieobsługiwany format pliku lub plik nie istnieje.";
        exit;
    }
    $text_color = imagecolorallocate($im, 0, 0, 0); // Biały
    $fontPath = 'arial.ttf'; // Ścieżka do pliku czcionki

    // Dodawanie tekstu do obrazka
    $fontSize = adjustFontSizeToFit($im, 24, $line1, $fontPath, $width, $height);
    $yOffset = $y + ($height / 2); // Opcjonalnie centrowanie tekstu w pionie
    imagettftext($im, $fontSize, 0, $x, $yOffset, $text_color, $fontPath, $line1);

    $fontSize = adjustFontSizeToFit($im, 24, $line2, $fontPath, $width, $height);
    $yOffset = $y + ($height / 2) + 30; // Zaktualizowane centrowanie tekstu w pionie dla drugiej linii
    imagettftext($im, $fontSize, 0, $x, $yOffset, $text_color, $fontPath, $line2);

    $nazwa_pliku = time();
    // Zapisywanie obrazka jako PNG
    imagepng($im, '../downloads/imienniki_generated/'.$nazwa_pliku.'.png');
    imagedestroy($im);

    echo "Tekst dodany. <img src='https://www.etykietyweselne.pl/admin/downloads/imienniki_generated/".$nazwa_pliku.".png'>";
}



?>



<form method="post">
        <label for="line1">Pierwsza linijka tekstu:</label>
        <input type="text" id="line1" name="line1" required><br>

        <label for="line2">Druga linijka tekstu:</label>
        <input type="text" id="line2" name="line2" required><br>

        <h3>Wybierz wzór:</h3>
        <div class="imienniki-wzory-container">
        <?php
        $rows = $mysql->sqlQuery("SELECT * from imienniki_wzory");
        foreach ($rows as $row) {
            echo '<input type="radio" id="wzor' . $row['id'] . '" name="wzor" value="' . $row['id'] . '">';
            echo '<label for="wzor' . $row['id'] . '"><img src="https://www.etykietyweselne.pl/admin/'.$row['plik'].'"></label><br>';
        }
       
        ?>
    </div>
        <button type="submit">Generuj</button>
    </form>
</body>
</html>
<?php
phpinfo();
?>