PHP - Manejo de Envió de Imágenes

 
Vista:

Manejo de Envió de Imágenes

Publicado por mydaboin (1 intervención) el 12/05/2020 18:50:22
Buenas tardes tengo un código que ejecuta el envió de una imagen, este es un ejemplo que funciona correctamente para lo que estoy buscando en cierto modo:

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
94
95
96
97
98
99
100
<?php
 
if(isset($_FILES['images'])){
 
//Funciones optimizar imagenes
 
//Ruta de la carpeta donde se guardarán las imagenes
$patch='imagenes';
 
//Parámetros optimización, resolución máxima permitida
$max_ancho = 800;
$max_alto = 900;
 
if($_FILES['images']['type']=='image/png' || $_FILES['images']['type']=='image/jpeg' || $_FILES['images']['type']=='image/gif'){
 
$medidasimagen= getimagesize($_FILES['images']['tmp_name']);
 
//Si las imagenes tienen una resolución y un peso aceptable se suben tal cual
	if($medidasimagen[0] < 800 && $_FILES['images']['size'] < 100000){
 
	$nombrearchivo=$_FILES['images']['name'];
	move_uploaded_file($_FILES['images']['tmp_name'], $patch.'/'.$nombrearchivo);
 
}
 
//Si no, se generan nuevas imagenes optimizadas
else {
 
$nombrearchivo=$_FILES['images']['name'];
 
//Redimensionar
$rtOriginal=$_FILES['images']['tmp_name'];
 
if($_FILES['images']['type']=='image/jpeg'){
$original = imagecreatefromjpeg($rtOriginal);
}
else if($_FILES['images']['type']=='image/png'){
$original = imagecreatefrompng($rtOriginal);
}
else if($_FILES['images']['type']=='image/gif'){
$original = imagecreatefromgif($rtOriginal);
}
 
list($ancho,$alto)=getimagesize($rtOriginal);
 
$x_ratio = $max_ancho / $ancho;
$y_ratio = $max_alto / $alto;
 
 
if( ($ancho <= $max_ancho) && ($alto <= $max_alto) ){
    $ancho_final = $ancho;
    $alto_final = $alto;
}
elseif (($x_ratio * $alto) < $max_alto){
    $alto_final = ceil($x_ratio * $alto);
    $ancho_final = $max_ancho;
}
else{
    $ancho_final = ceil($y_ratio * $ancho);
    $alto_final = $max_alto;
}
 
$lienzo=imagecreatetruecolor($ancho_final,$alto_final);
 
imagecopyresampled($lienzo,$original,0,0,0,0,$ancho_final, $alto_final,$ancho,$alto);
 
//imagedestroy($original);
 
$cal=8;
 
if($_FILES['images']['type']=='image/jpeg'){
imagejpeg($lienzo,$patch."/".$nombrearchivo);
}
else if($_FILES['images']['type']=='image/png'){
imagepng($lienzo,$patch."/".$nombrearchivo);
}
else if($_FILES['images']['type']=='image/gif'){
imagegif($lienzo,$patch."/".$nombrearchivo);
}
 
}
	}
	else echo 'fichero no soportado';
 
}
 
?>
 
<form action="" method="post" class="formulario" enctype="multipart/form-data">
 
<div class="formulario-grupo">
	<label for="images">Cargar imagen</label>
	<input type="file" name="images" id="images" accept="image/*">
</div>
<div class="formulario-grupo">
	<input type="submit" value="Upload File" class="boton">
</div>
</form>

PERO yo necesito enviar varias imágenes, y este número puede disminuirse o ampliarse mediante variable... Como aplico esta condición en PHP, en perl hago lo siguiente para eso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if ($numfotos<1){
    $numfotos=5;
}
while ($x<=$numfotos){
    $i++;
    if ($x eq "0"){
        $m="pequeña";
        $imagen_buscar="../$filtro/imagenes/t\_$codigo-1.jpg";
        $imagen_mostrar="../$filtro/imagenes/t\_$codigo-1.jpg";
    }else{
        $m="grande $x";
        $imagen_buscar="../$filtro/imagenes/$codigo-$x.jpg";
        $imagen_mostrar="../$filtro/imagenes/$codigo-$x.jpg";
    }
    print "</td><td align=center bgcolor=\"$colorfondo\">\n";
    print "Imagen $m<br><input type=file name=imagen$i>\n";
    print "</td></tr>";
    $x++;
}

Se puede llevar esto de perl a PHP, ya que php tiene un mejor manejo de las imágenes en lo que se refiere re dimensionar sin tener que instalar en mi servidor librerías previas como es el caso de perl, es más directo a la hora de cambiar el tamaño de las imágenes. quiero Usar esta funcionalidad, lógicamente estoy incursionando en PHP.
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 Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Manejo de Envió de Imágenes

Publicado por Julio (830 intervenciones) el 12/05/2020 19:04:32
Puedes solicitar varias imágenes a la vez. En el input type="file" pon el name="images[]" y luego al recogerlas tienes un array de imágenes subidas.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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