Hola amigos del foro, estoy intentando redimensionar las imágenes que subo al servidor desde un formulario de datos, he intentado hacerlo con algunas librerías que encontré en la red pero muchas tenían el problema de que cuando el peso de la imagen era mayor a 2 MB, se producía un error y no la subía.
Es por esto que empecé a hacer un script que me ayudara con eso, siguiendo los consejos que leí en algunos foros, deseché la función
imagecreatefromjpeg() que era con la que tenía el problema del peso de la imagen y lo que intento hacer en mi script es subir la imagen, redimensionarla creando con el script la nueva imagen redimensionada de la ya subida y la original eliminarla al final.
Código PHP:
Ver original<?php
class redimensionar{
public $alto;
public $ancho;
public $vieja;
public $nueva;
public function reducir($imagen_vieja, $nombre){
$this->vieja = "images/".$nombre;
$this->nueva, $this->vieja, 0, 0, 0, 0,
150, 150, $this->ancho, $this->alto
);
list($nuevo_nombre, $viejo_tipo) = explode(".", $nombre);
return true;
}else{
echo "Error";
}
}
}
?>
Y desde aquí realizo la llamada a la función del script:
Código PHP:
Ver original<?php
require_once("scripts/redimensionar.php");
foreach($_FILES as $key) {
if($key['error'] == UPLOAD_ERR_OK ){
$n = $key["name"];
$temporal = $key["tmp_name"];
echo "Este archivo ya existe";
}else{
$redimension = new redimensionar();
if($redimension->reducir($temporal, $n)){
?>
<img src="images/<?=$nom?>.jpeg" />
<?php
}else{
echo "Se produjo un error";
}
}
}
}else{
echo $key['error'];
}
}
?>
No se logra subir ni redimensionar la imagen y como resultado aparece esta alerta:
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in C:\AppServ\www\Prueba\scripts\redimensionar.php on line 21
Lo curioso fue que probé imprimiendo una cadena de texto cualquiera en la segunda línea de la función
reducir() cada vez que se suba la imagen pero al mismo tiempo se muestra el mensaje de "Error" que supuestamente se debe mostrar cuando no se sube la imagen con
move_uploaded_file(). También probé sin usar condiciones dentro de la función, es decir, que la línea de
move_uploaded_file() vaya directamente y que luego se ejecute el resto del código, en ese caso se muestran más alertas:
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in C:\AppServ\www\Prueba\scripts\redimensionar.php on line 21
Warning: getimagesize(images/verde.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:\AppServ\www\Prueba\scripts\redimensionar.php on line 14
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in C:\AppServ\www\Prueba\scripts\redimensionar.php on line 21
Warning: unlink(images/verde.jpg) [function.unlink]: No such file or directory in C:\AppServ\www\Prueba\scripts\redimensionar.php on line 23
Quizá no me de cuenta ahora del error porque ya van a ser casi las 5 am aquí y no he dormido mucho, pero aparentemente la imagen no se está subiendo al servidor y es ahí en donde no encuentro la explicación pues las instrucciones de la condición se ejecutan, con errores pero lo hacen, indicando que el proceso de subida de la imagen se realizó aunque no sea así, en un momento creí que faltaba completar la ruta para subir la imagen y le coloqué
../ adelante pero solo generó más alertas pues las carpetas está al mismo nivel, incluso me fijé en la carpeta de imágenes en el servidor si se habían subido las imágenes en todos los intentos pero no hubo éxito, solo suben cuando únicamente coloco la línea de la función
move_uploaded_file() sin el resto de instrucciones y sin condiciones. Si les sirve de información, estoy con la versión 5.2.6 de PHP.
Les agradeceré mucho si me dan una mano con esto, gracias de antemano.