Nueva pregunta

Pregunta:

Fecha: 26-10-2017 19:00:15 (En Español)

Redimensionar imagen en PHP, crea imagen en negro[Resuelta]

Hola, tengo un problema que hace tiempo no puedo solucionar, uso un script para redimensionar la imagen, el problema que tengo es que no me toma el valor de la variable $imagen, el codigo me funciona si le asigno a $imagen = 'foto.jpg'; , pero cuando le asigno el valor del array $imagen = $name_array[$i]; , no me funciona el redimensionar imagen y me crea una imagen en negro, si le hago un echo $imagen; si me muestra el valor de la foto con la extension, eso es lo raro. Les dejo el codigo completo que utilizo. Otro dato, baje 8 diferentes script de internet para crear miniaturas de imagen y me pasa exactamente lo mismo. tengo activada la libreria GD en el servidor.Gracias!!
//En la anterior pagina me muestra los casilleros de las fotos a subir dependiendo de la cantidad elegida.
if(isset($_FILES['file_array'])){
$name_array = $_FILES['file_array']['name'];
$tmp_name_array = $_FILES['file_array']['tmp_name'];
$type_array = $_FILES['file_array']['type'];
$size_array = $_FILES['file_array']['size'];
$error_array = $_FILES['file_array']['error'];

for($i = 0; $i < count($tmp_name_array); $i++){
if(move_uploaded_file($tmp_name_array[$i], "imagenes/".$name_array[$i])){

$sql="UPDATE tabla SET nombre_imagen$i = ('$name_array[$i]') WHERE id = '$id'";
mysql_query($sql,$con);

$imagen = $name_array[$i];
echo " $imagen";

//El echo $imagen si me muestra el valor de la foto con la extension de la que voy a redimensionar. //si le asigno a $imagen = 'foto.jpg', si me funciona y me crea la miniatura pero con el nombre del array me crea una imagen en negro.

$original = imagecreatefromjpeg($imagen);
$ancho_original = imagesx($original);
$alto_original = imagesy($original);
$copia = imagecreatetruecolor(200, 200);
imagecopyresampled($copia, $original, 0, 0, 0, 0, 200, 200, $ancho_original, $alto_original);

imagejpeg($copia, "imagen/".$imagen, 100);

}
else
{
echo "move_uploaded_file function failed for ".$name_array[$i]."<br>";
}
}

}
Etiquetas: PHP Votos: 0 - Respuestas: 5 - Vistas: 10 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 27-10-2017 04:50:44 podrías mostrarme lo que resulta de var_dump($name_array) y var_dump($tmp_name_array), ponlo justo arriba de la funcion move_uploaded_file.   Votos: 0 - Link respuesta
     
  • Fecha: 27-10-2017 15:49:40 Hola, gracias por la respuesta, en la pagina anterior me crea los casilleros para subir las fotos dependiendo de la cantidad, coloque el var_dump entre la funcion "for" y el move_uploaded_file, probe con la misma foto los dos var_dump, la foto se llama moto57.jpg, el resultado es:

    var_dump($name_array); = array(1) { [0]=> string(10) "moto57.jpg" } .
    var_dump($tmp_name_array); = array(1) { [0]=> string(14) "/tmp/phpWPA2hc" } .

    otro dato:todo el codigo me funciona bien excepto para crear la miniatura, me sube las fotos al servidor y copia el nombre en la tabla dependiendo la cantidad.

    gracias
      Votos: 0 - Link respuesta
     
  • Fecha: 27-10-2017 18:40:54 Hola, estuve probando con var_dump algunas cosas, te dejo estos datos para ver si te sirven para solucionar este problema.
    Aca te dejo los dos diferentes var_dump que hize con diferentes resultados.
    Cuando le asigno a $imagen = 'foto.jpg' me crea la miniatura de la imagen, le hago un var_dump a $original y el resultado es: resource(7) of type (gd),


    $imagen = 'foto.jpg';

    $original = imagecreatefromjpeg($imagen);
    var_dump($original);
    $ancho_original = imagesx($original);
    $alto_original = imagesy($original);
    $copia = imagecreatetruecolor(100, 100);
    imagecopyresampled($copia, $original, 0, 0, 0, 0, 100, 100, $ancho_original, $alto_original);

    imagejpeg($copia, "imagen/".$imagen, 100);
    ----------------------------------------
    Aca le asigno a $imagen = $name_array[$i] , (el echo de $imagen si me muestra el nombre de la foto con la extension), me crea una imagen en negro, le hago un var_dump a $original y el resultado es : bool(false) .

    $imagen = $name_array[$i];

    $original = imagecreatefromjpeg($imagen);
    var_dump($original);
    $ancho_original = imagesx($original);
    $alto_original = imagesy($original);
    $copia = imagecreatetruecolor(100, 100);
    imagecopyresampled($copia, $original, 0, 0, 0, 0, 100, 100, $ancho_original, $alto_original);

    imagejpeg($copia, "imagen/".$imagen, 100);
      Votos: 0 - Link respuesta
     
  • Fecha: 28-10-2017 18:25:30 Hola, ya encontre el error que tenia, para que funcione la funcion imagecreatefromjpeg tengo que tener ya el archivo subido, le agrege la ruta donde subia el archivo y me funciona, gracias.
    aca esta el codigo funcionando.
    $imagen = $name_array[$i];

    $original = imagecreatefromjpeg('imagenes/'.$imagen);
    var_dump($original);
    $ancho_original = imagesx($original);
    $alto_original = imagesy($original);
    $copia = imagecreatetruecolor(100, 100);
    imagecopyresampled($copia, $original, 0, 0, 0, 0, 100, 100, $ancho_original, $alto_original);

    imagejpeg($copia, "imagen/".$imagen, 100);
      Votos: 0 - Link respuesta
     
  • Fecha: 30-10-2017 05:44:04 Que bien que lo solucionaras, cuando vas probando con var_dump te vas dando cuenta como van quedando las cosas :D   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com