Comunidad de diseño web y desarrollo en internet online

Incluir la librería GD en upload.php

Citar            
MensajeEscrito el 13 Feb 2007 05:46 pm
Buenas a tod@s,

Cuando subimos una imagen por medio de flash con Filereference, recibimos el archivo en upload.php de esta forma y lo guarda perfecto en el servidor:

Código :

<?php
$uploadFile = $_FILES['Filedata']['name'];
move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile); 
?>


Hasta aquí todo marcha bien ....

Lo que quiero hacer es incluir la libreria GD, para que me guarde la imagen con su miniatura, tal y como lo hago con un formulario html y php como lo muestro a continuación.

Código :

<?
$mensaje = "";
if(isset($_POST['enviar'])){
   // Mime types permitidos
   $mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
   //
   // Obtenemos la información de la imagen
   $name = $_FILES['archivo']['name'];
   $type = $_FILES['archivo']['type'];
   $size = $_FILES['archivo']['size'];
   $tmp_name = $_FILES['archivo']['tmp_name'];
   $error = $_FILES['archivo']['error'];
   //
   $archivoTemp = getimagesize($_FILES['archivo'] ['tmp_name']);
   //
   //
   // Verificamos si el archivo es una imagen válida
   if(!in_array($type, $mimetypes)){
      $mensaje = "El archivo que intentas subir no es una imagen válida";
      } else {
      $mensaje = "Imagen guardada";
   }
   // Creamos el thumbnail
   switch($type) {
      case $mimetypes[0]:
      case $mimetypes[1]:
         $imagen = imagecreatefromjpeg($tmp_name);
      break;
      case $mimetypes[2]:
         $imagen = imagecreatefromgif($tmp_name);
      break;
      case $mimetypes[3]:
         $imagen = imagecreatefrompng($tmp_name);
      break;
   }
   // Definimos la medida máxima
   $thumb_max = 120; // de la muestra (thumbnail)
   $detalle_max = 420; // de la imagen detalle
   
   // Evaluamos si la imagen es horizontal
   if($archivoTemp[0]>$archivoTemp[1]) {
      // Definimos las medidas de las imagenes
      $thumb_w = $thumb_max;
      $thumb_h = ($archivoTemp[1]/$archivoTemp[0])*$thumb_max;
      $detalle_w = $detalle_max;
      $detalle_h = ($archivoTemp[1]/$archivoTemp[0])*$detalle_max;
   } else {
      $thumb_w = ($archivoTemp[0]/$archivoTemp[1])*$thumb_max;
      $thumb_h = $thumb_max;
      $detalle_w = ($archivoTemp[0]/$archivoTemp[1])*$detalle_max;
      $detalle_h = $detalle_max;
   }
   
   // Creamos las imágenes
   $thumb = imagecreatetruecolor($thumb_w,$thumb_h);
   $detalle = imagecreatetruecolor($detalle_w,$detalle_h);
   
   // Copiamos la original escalada
   imagecopyresampled($thumb,$imagen,0,0,0,0, $thumb_w,$thumb_h,imagesx($imagen),imagesy($imagen));
   
   imagecopyresampled($detalle,$imagen,0,0,0,0, $detalle_w,$detalle_h,imagesx($imagen),imagesy($imagen));
   
   // Destruimos la imagen original
   imagedestroy($imagen);
   
   //
   //
   define("carpetaThumbs", "imagenes/thumbs/"); 
   define("carpetaDetalles", "imagenes/"); 
   //damos salida a la imagen
   switch($type) {
      case $mimetypes[0]:
      case $mimetypes[1]:
            imagejpeg($thumb, carpetaThumbs.$name);
         imagejpeg($detalle, carpetaDetalles.$name);
        break;
       case $mimetypes[2]:
            imagegif($thumb, carpetaThumbs.$name);
         imagegif($detalle, carpetaDetalles.$name);
      break;
       case $mimetypes[3]:
            imagepng($thumb, carpetaThumbs.$name);
         imagepng($detalle, carpetaDetalles.$name);
         break;
   }
   // Destruimos las imagenes temporales
   imagedestroy($thumb);
   imagedestroy($detalle);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Subir imagenes</title>
</head>

<body>
<form action="" method="post" enctype="multipart/form-data" name="form1">
  <label>Imagen 1:</label>
  <p>
    <input type="file" name="archivo" />
</p>
  <p>
    <label for="Submit"></label>
    <input type="submit" name="enviar" value="Submit"/>
</p>
  <p><? echo $mensaje?></p>
</form>
</body>
</html>


Necesito hacer esto con Flash + php y de esta forma no me funciona.
Nota: En el servidor esta activa la librería GD y las carpetas donde se guardarán las imagenes tienen todos los permisos (777).

Código :

<?php
// Mime types permitidos
$mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
//
// Obtenemos la información de la imagen
$name = $_FILES['Filedata']['name'];
$type = $_FILES['Filedata']['type'];
$size = $_FILES['Filedata']['size'];
$tmp_name = $_FILES['Filedata']['tmp_name'];
$error = $_FILES['Filedata']['error'];
//
$archivoTemp = getimagesize($_FILES['Filedata'] ['tmp_name']);
//
// Creamos el thumbnail
switch($type) {
   case $mimetypes[0]:
   case $mimetypes[1]:
      $imagen = imagecreatefromjpeg($tmp_name);
   break;
   case $mimetypes[2]:
      $imagen = imagecreatefromgif($tmp_name);
   break;
   case $mimetypes[3]:
      $imagen = imagecreatefrompng($tmp_name);
   break;
}
// Definimos la medida máxima
$thumb_max = 120; // de la muestra (thumbnail)
$detalle_max = 420; // de la imagen detalle

// Evaluamos si la imagen es horizontal
if($archivoTemp[0]>$archivoTemp[1]) {
   // Definimos las medidas de las imagenes
   $thumb_w = $thumb_max;
   $thumb_h = ($archivoTemp[1]/$archivoTemp[0])*$thumb_max;
   $detalle_w = $detalle_max;
   $detalle_h = ($archivoTemp[1]/$archivoTemp[0])*$detalle_max;
} else {
   $thumb_w = ($archivoTemp[0]/$archivoTemp[1])*$thumb_max;
   $thumb_h = $thumb_max;
   $detalle_w = ($archivoTemp[0]/$archivoTemp[1])*$detalle_max;
   $detalle_h = $detalle_max;
}

// Creamos las imágenes
$thumb = imagecreatetruecolor($thumb_w,$thumb_h);
$detalle = imagecreatetruecolor($detalle_w,$detalle_h);

// Copiamos la original escalada
imagecopyresampled($thumb,$imagen,0,0,0,0, $thumb_w,$thumb_h,imagesx($imagen),imagesy($imagen));

imagecopyresampled($detalle,$imagen,0,0,0,0, $detalle_w,$detalle_h,imagesx($imagen),imagesy($imagen));

// Destruimos la imagen original
imagedestroy($imagen);

//
//
define("carpetaThumbs", "thumbs/");  
//damos salida a la imagen
switch($type) {
   case $mimetypes[0]:
   case $mimetypes[1]:
      imagejpeg($thumb, carpetaThumbs.$name);
      imagejpeg($detalle, $name);
   break;
   case $mimetypes[2]:
      imagegif($thumb, carpetaThumbs.$name);
      imagegif($detalle, $name);
   break;
   case $mimetypes[3]:
      imagepng($thumb, carpetaThumbs.$name);
      imagepng($detalle, $name);
   break;
}
// Destruimos las imagenes temporales
imagedestroy($thumb);
imagedestroy($detalle);
?>


Muchas gracias de antemano ...

Por Jossephb

18 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Sep 2007 12:59 pm
hey dude i take this to work.. i'll prepare the code for ya and i'll send ya it later. ok...


cheers

Por elkenny

28 de clabLevel



 

salamanca

firefox
Citar            
MensajeEscrito el 30 Sep 2007 05:51 pm
aqui esta esto deberia de funcionarte a mi me va de lujo desde hoy a las 12:59



Código :

<?php 
    
   //damos la ruta de carpeta donde guardarlo todo
   $uploadDir = './';
   
   //damos el archivo
   $file=$_FILES['Filedata']['name'];
   
   //damos el archivo temporal (importante) es el que moveremos con move_uploaded_file
   $tmp_name = $_FILES['Filedata']['tmp_name'];
   
   //el archivio con su ruta
   $uploadFile = $uploadDir . $file;
   
   //movemos la imagen upload
   move_uploaded_file($tmp_name, $uploadFile); 
   
   //sacamos la ruta de thumb quitandole el .jpg
   $getUploadThumbFile =  basename($uploadFile, ".jpg");
   
   //el archivio thumb al que le incorporamos _thumb.jpg
   $UploadThumbFile =  $getUploadThumbFile . '_thumb.jpg';
   
     // $imagen = imagecreatefromjpeg($tmp_name);
     $imagen_thumb = imagecreatefromjpeg($uploadFile);
           
      //aqui ponemos las opciones deseadas para la thumbnail
      $anchoElegido = 28 ;
      $altoElegido = 44 ; 
      $calidad = 100 ;
         
      // Creamos una imagen vacia
      $thumb = imagecreatetruecolor($anchoElegido,$altoElegido);
      
      // Copiamos la thumbnail image a la imagen creada
      imagecopyresampled($thumb,$imagen_thumb,0,0,0,0, $anchoElegido,$altoElegido,imagesx($imagen_thumb),imagesy($imagen_thumb));
      
      //damos salida a la imagen thumbnail creada y copiada.
          imagejpeg($thumb, $UploadThumbFile, $calidad);
          
      
 ?>

Por elkenny

28 de clabLevel



 

salamanca

firefox
Citar            
MensajeEscrito el 28 Jun 2009 08:33 pm
Me funciona el código. Pero el problema es que las deforma, ya que se le da un tamaño fijo de alto y ancho.
Que puedo hacer para que me ajuste el ancho, pero saque el alto proporcional para que no deforme.?

Por yuryuflo

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Sep 2011 07:22 pm
<?php

//damos la ruta de carpeta donde guardarlo todo
$uploadDir = './';

//damos el archivo
$file=$_FILES['Filedata']['name'];

//damos el archivo temporal (importante) es el que moveremos con move_uploaded_file
$tmp_name = $_FILES['Filedata']['tmp_name'];

//el archivio con su ruta
$uploadFile = $uploadDir . $file;

//movemos la imagen upload
move_uploaded_file($tmp_name, $uploadFile);

//sacamos la ruta de thumb quitandole el .jpg
$getUploadThumbFile = basename($uploadFile, ".jpg");

//el archivio thumb al que le incorporamos _thumb.jpg
$UploadThumbFile = $getUploadThumbFile . '_thumb.jpg';

// $imagen = imagecreatefromjpeg($tmp_name);
$imagen_thumb = imagecreatefromjpeg($uploadFile);

//aqui ponemos las opciones deseadas para la thumbnail
$anchoElegido = 28 ;
$altoElegido = 44 ;
$calidad = 100 ;

// Creamos una imagen vacia
$thumb = imagecreatetruecolor($anchoElegido,$altoElegido);

// Copiamos la thumbnail image a la imagen creada
imagecopyresampled($thumb,$imagen_thumb,0,0,0,0, $anchoElegido,$altoElegido,imagesx($imagen_thumb),imagesy($imagen_thumb));

//damos salida a la imagen thumbnail creada y copiada.
imagejpeg($thumb, $UploadThumbFile, $calidad);


?>

Por didabad

2 de clabLevel



 

msie8
Citar            
MensajeEscrito el 08 Sep 2011 07:25 pm
llevo tiempo tratando de hacer un código en php como el del amigo elkenny pero mis conocimientos de php son pocos



este código me funciona muy bien el problema es que necesito mover el thumbnail a otro directorio pero no lo he logrado. osea la imagen original puedo guardarla en el directorio deseado pero el thumnail siempre se guarda en el directorio en que se encuentra el php


si alguien me pudiera ayudar se lo agradeceré siempre

Por didabad

2 de clabLevel



 

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.