Saludos compañero, la verdad tengo años sin tocar PHP, pero en cuanto a tu petición, si,
es posible. Es cuestión de investigar un poco.
Es posible generar imágenes a partir de datos con
PHP a través de la biblioteca de funciones de gb para el procesamiento y generación de imágenes. Es cuestión de ponerse, veamos:
supongamos que quiero por alguna razon enumerar o marcar tres estados de Venezuela, en este ejemplo será Bolívar, Guarico y Anzoategui.
los datos por cuestión de rapidez sera a través de POST y utilizare skeleton css, Empecemos.
1) Creamos nuestro formulario
HTML:
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<div class ="row">
<div class="six columns">
<center><h5>bolivar</h5></center>
<center><h5>guarico</h5></center>
<center><h5>Anzoategui</h5></center>
</div>
<div class="six columns">
<input class="u-full-width" type="text" placeholder = 'valor' name="valorBolivar">
<input class="u-full-width" type="text" placeholder = 'valor' name="valorGuarico">
<input class="u-full-width" type="text" placeholder = 'valor' name="valorAnzoategui">
</div>
<center><input class="button-primary" type="submit" name="Submit" value="Submit"></center>
</div>
</form>
2) Construimos nuestra función para generar la imagen:
PHP:
function CreateImg($valorBolivar,$valorGuarico,$valorAnzoategui) {
//Declaramos nuestra ruta de imagen original y la ruta de nuestra imagen modificada.
$image_path = 'images/venezuela.jpg';
$image_to = 'images/venezuela_modificed.jpg';
//Declaramos la ruta de la fuente a utilizar en nuestra imagen.
$font_path = 'C:\Windows\Fonts\arial.ttf';
//Creamos una imagen a partir de una imagen ya hecha, en este caso del mapa de venezuela.
$image = imagecreatefromjpeg($image_path);
// declaramos el color a utilizar
$black = imagecolorallocate($image, 0, 0, 0);
//pasamos los valores del formularios
$textBolivar = $valorBolivar;
$textGuarico = $valorGuarico;
$textAnzoategui = $valorAnzoategui;
// con la funcion imagettftext "dibujamos sobre la imagen"
//debes jugar con las posiciones, para mas informacion https://www.php.net/manual/es/book.image.php
imagettftext($image, 12, 0, 300, 200, $black, $font_path, $textBolivar);
imagettftext($image, 12, 0, 220, 140, $black, $font_path, $textGuarico);
imagettftext($image, 12, 0, 280, 120, $black, $font_path, $textAnzoategui);
//generamos o creamos la imagen modificada y la guardamos en la ruta especificada y declarada anteriormente.
if(imagejpeg($image,$image_to)) {
imagedestroy($image);
//como quiero mostrar la nueva imagen en html, devolvemos la ruta de nuestra nueva imagen
return $image_to;
} else {
echo('error');
}
}
3) tratamos los valores de nuestro formulario y llamamos la función que hemos creado.
PHP:
if (isset($_POST['Submit'])) {
if (isset($_POST['valorBolivar']) || isset($_POST['valorGuarico']) || isset($_POST['valorAnzoategui']) ) {
$valorBolivar = htmlspecialchars($_POST['valorBolivar']);
$valorGuarico = htmlspecialchars($_POST['valorGuarico']);
$valorAnzoategui = htmlspecialchars($_POST['valorAnzoategui']);
$images_default_path = CreateImg($valorBolivar,$valorGuarico,$valorAnzoategui);
} else {
$valorBolivar = '0';
$valorGuarico = '0';
$valorAnzoategui = '0';
$images_default_path = CreateImg($valorBolivar,$valorGuarico,$valorAnzoategui);
}
} else {
$images_default_path = 'images/venezuela.jpg';
}
4) no nos olvidemos de asignar $images_default_path en el img del html
HTML:
<img class="u-max-full-width" src="<?php echo $images_default_path; ?>">
a este punto ya generamos imagen a partir de datos que ingresemos:
Ya queda de tu parte hacerlo con
mysql o como nuestro compañero ha dicho anteriormente, con
svg, también imprimir tu reporte con algún generador de pdf con php, las posibilidades
son infinitas.
Honestamente tratar estas funcionalidades con
php suele ser
engorroso, como te has dado cuenta, existen docenas y docenas de frameworks en js que te pueden facilitar tu requerimiento. Ya nuestro compañero te ha mencionado algunos.
Espero haberte ayudado, suerte.