PHP - Subida de imagenes con marca de agua inc.

 
Vista:
sin imagen de perfil

Subida de imagenes con marca de agua inc.

Publicado por Alfredo (1 intervención) el 24/09/2014 14:59:03
Buenas tardes a todos! soy nuevo en la web del programador, estuve Googleando por varias páginas web para poder documentar algo de la idea que tengo:

Quiero hacer un gestor de subida de imágenes, que no supere 300KB y que sólo permita imágenes con la extensión jpg, que una vez subida la imagen, querría que automaticamente hiciera una marca de agua con otra imagen.

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php if ((isset($_POST["enviado"])) && ($_POST["enviado"] == "form1"))
 {
//Si el archivo es superior a 300KB salta el mensaje
 	if($_FILES['userfile']['size'] > 300000)
	 {
  	  echo "<script type=\"text/javascript\">alert(\"No se pueden subir fotos superiores a 300KB\");</script>";
  	  echo "<script type=\"text/javascript\">history.back();</script>";
	 }
//Si el archivo no tiene extensión jpg salta el mensaje
		elseif( $_FILES['userfile']['type'] != "image/jpeg")
			 {
			 echo "<script type=\"text/javascript\">alert(\"Sólo admite imagenes con extensión JPG ó JPEG.\"); </script>";
			 echo "<script type=\"text/javascript\">history.back();</script>";
			}
				else{
					$origen = date('G.i_dmy_').$_FILES['userfile']['name'];
					move_uploaded_file($_FILES['userfile']['tmp_name'], "../../../img/galeria/modelos/".$origen);
					?>
//Escribe en el select del formulario el nombre de la imagen y cierra la ventana emergente
					<script>
						opener.document.form1.<?php echo $_POST["nombrecampo"]; ?>.value="<?php echo $origen; ?>";
						self.close();
					</script>
					<?php
					}
  }
else
{?>
 
<form action="subirimagen.php" method="post" enctype="multipart/form-data" id="form1"  name="form1">
 
 
 
  <p>
 
    <input name="userfile" type="file" />
 
  </p>
 
  <p>
 
<input type="submit" name="button" id="button" value="Subir Imagen" />
 
  <input name="nombrecampo" type="hidden" value="<?php echo $_GET["campo"]; ?>" />
 
  <input type="hidden" name="enviado" value="form1" />
 
</form>
 
<?php }?>
 
<?php
 
//AQUI EMPIEZA LA MARCA DE AGUA
 
$marcadeagua="marca.png";
$destino="copyright_" .$origen;
$destino_temporal=tempnam("tmp/","tmp");
marcadeagua($origen, $marcadeagua, $destino_temporal, 100);
 
// guardamos la imagen
$fp=fopen($destino,"w");
fputs($fp,fread(fopen($destino_temporal,"r"),filesize($destino_temporal)));
fclose($fp);
 
 
function marcadeagua($img_original, $img_marcadeagua, $img_nueva, $calidad)
{
	// obtener datos de la fotografia 
	$info_original = getimagesize($img_original);
	$anchura_original = $info_original[0];
	$altura_original = $info_original[1];
	// obtener datos de la "marca de agua" 
	$info_marcadeagua = getimagesize($img_marcadeagua);
	$anchura_marcadeagua = $info_marcadeagua[0];
	$altura_marcadeagua = $info_marcadeagua[1];
	// calcular la posición donde debe copiarse la "marca de agua" en la fotografia 
	$horizmargen = ($anchura_original - $anchura_marcadeagua)/2;
	$vertmargen = ($altura_original - $altura_marcadeagua)/1.5;
	// crear imagen desde el original 
	$original = ImageCreateFromJPEG($img_original);
	ImageAlphaBlending($original, true);
	// crear nueva imagen desde la marca de agua 
	$marcadeagua = ImageCreateFromPNG($img_marcadeagua);
	// copiar la "marca de agua" en la fotografia 
	ImageCopy($original, $marcadeagua, $horizmargen, $vertmargen, 0, 0, $anchura_marcadeagua, $altura_marcadeagua);
	// guardar la nueva imagen 
	ImageJPEG($original, $img_nueva, $calidad);
	// cerrar las imágenes 
	ImageDestroy($original);
	ImageDestroy($marcadeagua);
}
?>

La cuestión es que la línea de código de la marca de agua "marcadeagua($origen, $marcadeagua, $destino_temporal, 100);" me salta un error que no ha sido declarado.

Estoy aprendiendo sobre el lenguaje de PHP y no se como solucionarlo, si alguien me pudiera ayudar se lo agradecería, gracias.
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