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();
?>