PHP - Guardar imagen a través de botón en php

 
Vista:
sin imagen de perfil

Guardar imagen a través de botón en php

Publicado por Héctor (4 intervenciones) el 13/05/2018 21:40:27
Buenas tardes, he estado ya unos días trabajando en esto, y tras estar bastante cerca de lograr lo que estoy buscando, me he quedado sin ideas de cómo resolverlo.
El caso es que ya he logrado que a través de un botón de "Crear", se pueda juntar un texto en una imagen. Ahora mismo me encuentro en el problema. Y es que necesito que haya dos opciones para elegir el tamaño con el que guardar la imagen.

Este es el código que tengo para la página php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
// Set the content-type
$imagen = imagecreatefrompng('imagen.png');
 
// Create the image
$black = imagecolorallocate($imagen, 0, 0, 0);
 
// The text to draw
if(isset($_GET['textaaa'])){
    $texto=$_GET['textaaa'];
}else{
    $texto="";
}
 
$font = 'fuente.otf';
 
// Add the text
imagettftext($imagen, 48, 0, 48, 70, $black, $font, $texto);
 
 
//The width to draw
if (isset ($_GET["aaa"] ) ){ $wh=explode("|", $_GET["aaa"] ); $w=$wh[0]; $h=$wh[1]; }
 
$ancho = $w;
$alto = $h;
$newwidth = $ancho;
$newheight = $alto;
 
imagecopyresized($nuevaimagen, $imagen, 0, 0, 0, 0, $newwidth, $newheight, $ancho, $alto);
 
 
header("Content-type: image/png");
imagepng($nuevaimagen);
?>

y esto está en aaa.php

1
2
3
4
5
6
7
8
9
10
<form method="get" action="aaa.php">
<input type="text" name="aaa" id="aaa">
 
<select name="aaa">
<option value='230|70'>Ejemplo1</option>
<option value='50|50'>Ejemplo2</option>
</select>
 
<button>Crear</button>
</form>

La imagen creada saldrá en una nueva pestaña, y me gustaría que el usuario pudiese elegir con el <select>, el tamaño que viene por defecto en la opción.

¿Sabríais el motivo por el que no me funciona el código aquí?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar imagen a través de botón en php

Publicado por xve (6935 intervenciones) el 14/05/2018 07:26:10
Hola Héctor, en el formulario, tienes dos name="aaa", y esto no debería ser... según veo en tu código php, el primero (input) tendría que ser: textaaa

Puede ser ese el problema?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Guardar imagen a través de botón en php

Publicado por Héctor (4 intervenciones) el 14/05/2018 11:42:06
A pesar de cambiar ese detalle, me sigue sin funcionar.

He probado a usar esto para obtener las dimensiones de la imagen cargada, y a partir de ellas y con los datos de $w y $h tener las nuevsa dimensiones de la imagen que quiero crear como resultado final. Estos serían los cambios:

1
2
3
4
$x = ImageSX($imagen);
$y = ImageSY($imagen);
 
imagecopyresized($nuevaimagen, $imagen, 0, 0, 0, 0, $w, $h, $x, $y);

Sin embargo, continúa sin dar ningún tipo de imagen en la página. Conviene decir que sin usar el <select>, la imagen resultante funciona perfectamente, con unas dimensiones fijas, pero que se ve perfectamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar imagen a través de botón en php

Publicado por xve (6935 intervenciones) el 14/05/2018 16:56:46
Así, si que te tendría que funcionar!!!

has comprobado que los valores de las anchuras y alturas sean correctos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar imagen a través de botón en php

Publicado por xve (6935 intervenciones) el 14/05/2018 16:55:38
Hector, revisando el código nuevamente veo que al hacer el imagecopyresized, envías el misma valor para el source que para el tamaño destino, por lo que entiendo que no ara nada... o a lo mejor te da algún warning o error...

Si haces un:
1
echo $ancho." - ".$alto." - ".$newwidth." - ".$newheight;

Veras que las anchuras y alturas son iguales!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Guardar imagen a través de botón en php

Publicado por Héctor (4 intervenciones) el 14/05/2018 17:31:13
He probado cambiando el nombre del select por <select name="ab">, ya que quizás hacía algún tipo de fallo por el nombre, y probando con
1
var_dump($_GET);die();
me sale este código:
1
array(2) { ["aaa"]=> string(3) "www" ["ab"]=> string(6) "230|70" }
, pero no soy capaz con solamente eso saber cuál puede ser el fallo.

Sobre el último código que me has mostrado
1
echo $ancho." - ".$alto." - ".$newwidth." - ".$newheight;
, ¿debería con ello modificar el imagecopyresized?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar imagen a través de botón en php

Publicado por xve (6935 intervenciones) el 14/05/2018 17:33:39
Yo creo que te devuelve los mismas valores para altura y anchura... que te devuelve este echo "...." que te he indicado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Guardar imagen a través de botón en php

Publicado por Héctor (4 intervenciones) el 14/05/2018 18:00:24
He añadido
1
$nuevaimagen = imagecreatetruecolor($x, $y);
para darle unas dimensiones a la imagen final, pero sale totalmente desproporcionada, con fondo negro y sin el texto escrita en ella.

y sobre el echo, me sale esto:
1
array(2) { ["aaa"]=> string(8) "www" ["ab"]=> string(5) "230|70" } - - -

ya que lo he escrito así:
1
var_dump($_GET);echo $ancho." - ".$alto." - ".$newwidth." - ".$newheight;die();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar