Foros del Web » Programando para Internet » PHP »

subir multiples imagenes y crear thumbnail

Estas en el tema de subir multiples imagenes y crear thumbnail en el foro de PHP en Foros del Web. Tengo este código, me funciona bien para subir una imagen, pero lo que quiero hacer es modificarlo para subir múltiples imágenes... Código PHP: <?php   ...
  #1 (permalink)  
Antiguo 04/01/2010, 19:05
Avatar de blogger  
Fecha de Ingreso: diciembre-2005
Ubicación: frente al monitor
Mensajes: 398
Antigüedad: 18 años, 4 meses
Puntos: 12
subir multiples imagenes y crear thumbnail

Tengo este código, me funciona bien para subir una imagen, pero lo que quiero hacer es modificarlo para subir múltiples imágenes...

Código PHP:
<?php
 
 $idir 
$session->username."/images/";   // Path To Images Directory
 
$tdir $session->username."/images/thumbs/";   // Path To Thumbnails Directory
 
$twidth "125";   // Maximum Width For Thumbnail Images
 
$theight "100";   // Maximum Height For Thumbnail Images
  
 
if (!isset($_GET['subpage'])) {   // Image Upload Form Below   ?>
   <form method="post" action="uploader.php?subpage=upload" enctype="multipart/form-data">
    File:<br />
   <input type="file" name="imagefile" class="form">
   <br /><br />
   <input name="submit" type="submit" value="Sumbit" class="form">  <input type="reset" value="Clear" class="form">
   </form>
 <? } else  if (isset($_GET['subpage']) && $_GET['subpage'] == 'upload') {   // Uploading/Resizing Script
   
$url $_FILES['imagefile']['name'];   // Set $url To Equal The Filename For Later Use
   
if ($_FILES['imagefile']['type'] == "image/jpg" || $_FILES['imagefile']['type'] == "image/jpeg" || $_FILES['imagefile']['type'] == "image/pjpeg") {
     
$file_ext strrchr($_FILES['imagefile']['name'], '.');   // Get The File Extention In The Format Of , For Instance, .jpg, .gif or .php
     
$copy copy($_FILES['imagefile']['tmp_name'], "$idir" $_FILES['imagefile']['name']);   // Move Image From Temporary Location To Permanent Location

     
if ($copy) {   // If The Script Was Able To Copy The Image To It's Permanent Location
       
print 'Image uploaded successfully.<br /><a href="'.$session->username.'/images/'.$url.'"><img src="'.$session->username.'/images/thumbs/'.$url.'"></a>';   // Was Able To Successfully Upload Image
       
$simg imagecreatefromjpeg("$idir" $url);   // Make A New Temporary Image To Create The Thumbanil From
       
$currwidth imagesx($simg);   // Current Image Width
       
$currheight imagesy($simg);   // Current Image Height
       
if ($currheight $currwidth) {   // If Height Is Greater Than Width
          
$zoom $twidth $currheight;   // Length Ratio For Width
          
$newheight $theight;   // Height Is Equal To Max Height
          
$newwidth $currwidth $zoom;   // Creates The New Width
       
} else {    // Otherwise, Assume Width Is Greater Than Height (Will Produce Same Result If Width Is Equal To Height)
         
$zoom $twidth $currwidth;   // Length Ratio For Height
         
$newwidth $twidth;   // Width Is Equal To Max Width
         
$newheight $currheight $zoom;   // Creates The New Height
       
}
       
$dimg imagecreate($newwidth$newheight);   // Make New Image For Thumbnail
       
imagetruecolortopalette($simgfalse256);   // Create New Color Pallete
       
$palsize ImageColorsTotal($simg);
       for (
$i 0$i $palsize$i++) {   // Counting Colors In The Image
        
$colors ImageColorsForIndex($simg$i);   // Number Of Colors Used
        
ImageColorAllocate($dimg$colors['red'], $colors['green'], $colors['blue']);   // Tell The Server What Colors This Image Will Use
       
}
       
imagecopyresized($dimg$simg0000$newwidth$newheight$currwidth$currheight);   // Copy Resized Image To The New Image (So We Can Save It)
       
imagejpeg($dimg"$tdir" $url);   // Saving The Image
       
imagedestroy($simg);   // Destroying The Temporary Image
       
imagedestroy($dimg);   // Destroying The Other Temporary Image
       
print 'Image thumbnail created successfully.';   // Resize successful
     
} else {
       print 
'<font color="#FF0000">ERROR: Unable to upload image.</font>';   // Error Message If Upload Failed
     
}
   } else {
     print 
'<font color="#FF0000">ERROR: Wrong filetype (has to be a .jpg or .jpeg. Yours is ';   // Error Message If Filetype Is Wrong
     
print $file_ext;   // Show The Invalid File's Extention
     
print '.</font>';
   }
 }

?>
¿Alguien me puede ayudar?
__________________
http://exegesis-biblica.com/
  #2 (permalink)  
Antiguo 04/01/2010, 19:36
 
Fecha de Ingreso: enero-2010
Mensajes: 127
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: subir multiples imagenes y crear thumbnail

Lo primero es saber cuantas imagenes vas a cargar tonces necesitas preguntar eso primero:

Creas una pagina que se llame como tu quieras .html:

<!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>Documento sin t&iacute;tulo</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="Aqui vas a poner la dirección de tu pagina esa que tu tas mostrando">

Ingresa el numero de fotos a cargar:
<input type="text" name="cantidad" />

<input type="submit" name="Submit" value="Enviar" />

</form>
</body>
</html>

Esa pagina te envia la cantidad de fotos a cargar y t dirige hacia esa que tas mostrando alla arriba con tan solo poner el nombre de tu pagina de arriba en el action.

Luego haces estas modificaciones en tu pagina de arriba y ya:

Código PHP:
<?php

$idir = $session->username."/images/"; // Path To Images Directory
$tdir = $session->username."/images/thumbs/"; // Path To Thumbnails Directory
$twidth = "125"; // Maximum Width For Thumbnail Images
$theight = "100"; // Maximum Height For Thumbnail Images



if (!isset($_GET['subpage'])) { // Image Upload Form Below
for($i=0;$i<=$_REQUEST['cantidad'];$i++)
{ ?>

<form method="post" action="uploader.php?subpage=upload" enctype="multipart/form-data">
File:<br />
<input type="file" name="imagefile<? echo $i; ?>" class="form">
<br /><br />
<input name="submit" type="submit" value="Sumbit" class="form"> <input type="reset" value="Clear" class="form">
</form>
<?
}
} else if (isset($_GET['subpage']) && $_GET['subpage'] == 'upload') { // Uploading/Resizing Script
for($i=0;$i<=$_REQUEST['cantidad'];$i++)
{
$url = $_FILES['imagefile'.$i.'']['name']; // Set $url To Equal The Filename For Later Use
if ($_FILES['imagefile'.$i.'']['type'] == "image/jpg" || $_FILES['imagefile'.$i.'']['type'] == "image/jpeg" || $_FILES['imagefile'.$i.'']['type'] == "image/pjpeg") {
$file_ext = strrchr($_FILES['imagefile'.$i.'']['name'], '.'); // Get The File Extention In The Format Of , For Instance, .jpg, .gif or .php
$copy = copy($_FILES['imagefile'.$i.'']['tmp_name'], "$idir" . $_FILES['imagefile'.$i.'']['name']); // Move Image From Temporary Location To Permanent Location

if ($copy) { // If The Script Was Able To Copy The Image To It's Permanent Location
print 'Image uploaded successfully.<br /><a href="'.$session->username.'/images/'.$url.'"><img src="'.$session->username.'/images/thumbs/'.$url.'"></a>'; // Was Able To Successfully Upload Image
$simg = imagecreatefromjpeg("$idir" . $url); // Make A New Temporary Image To Create The Thumbanil From
$currwidth = imagesx($simg); // Current Image Width
$currheight = imagesy($simg); // Current Image Height
if ($currheight > $currwidth) { // If Height Is Greater Than Width
$zoom = $twidth / $currheight; // Length Ratio For Width
$newheight = $theight; // Height Is Equal To Max Height
$newwidth = $currwidth * $zoom; // Creates The New Width
} else { // Otherwise, Assume Width Is Greater Than Height (Will Produce Same Result If Width Is Equal To Height)
$zoom = $twidth / $currwidth; // Length Ratio For Height
$newwidth = $twidth; // Width Is Equal To Max Width
$newheight = $currheight * $zoom; // Creates The New Height
}
$dimg = imagecreate($newwidth, $newheight); // Make New Image For Thumbnail
imagetruecolortopalette($simg, false, 256); // Create New Color Pallete
$palsize = ImageColorsTotal($simg);
for ($i = 0; $i < $palsize; $i++) { // Counting Colors In The Image
$colors = ImageColorsForIndex($simg, $i); // Number Of Colors Used
ImageColorAllocate($dimg, $colors['red'], $colors['green'], $colors['blue']); // Tell The Server What Colors This Image Will Use
}
imagecopyresized($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight); // Copy Resized Image To The New Image (So We Can Save It)
imagejpeg($dimg, "$tdir" . $url); // Saving The Image
imagedestroy($simg); // Destroying The Temporary Image
imagedestroy($dimg); // Destroying The Other Temporary Image
print 'Image thumbnail created successfully.'; // Resize successful
} else {
print '<font color="#FF0000">ERROR: Unable to upload image.</font>'; // Error Message If Upload Failed
}
} else {
print '<font color="#FF0000">ERROR: Wrong filetype (has to be a .jpg or .jpeg. Yours is '; // Error Message If Filetype Is Wrong
print $file_ext; // Show The Invalid File's Extention
print '.</font>';
}
}
}
?>
  #3 (permalink)  
Antiguo 04/01/2010, 19:38
 
Fecha de Ingreso: enero-2010
Mensajes: 127
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: subir multiples imagenes y crear thumbnail

Amigo el codigo PHP de arriba ta malo es este lo acomode:

Código PHP:
<?php

$idir = $session->username."/images/"; // Path To Images Directory
$tdir = $session->username."/images/thumbs/"; // Path To Thumbnails Directory
$twidth = "125"; // Maximum Width For Thumbnail Images
$theight = "100"; // Maximum Height For Thumbnail Images



if (!isset($_GET['subpage'])) { // Image Upload Form Below
?>

<form method="post" action="uploader.php?subpage=upload" enctype="multipart/form-data">
File:<br />
<? for($i=0;$i<=$_REQUEST['cantidad'];$i++)
{ ?>
<input type="file" name="imagefile<? echo $i; ?>" class="form">
<? } ?>
<br /><br />
<input name="submit" type="submit" value="Sumbit" class="form"> <input type="reset" value="Clear" class="form">
</form>
<?
} else if (isset($_GET['subpage']) && $_GET['subpage'] == 'upload') { // Uploading/Resizing Script
for($i=0;$i<=$_REQUEST['cantidad'];$i++)
{
$url = $_FILES['imagefile'.$i.'']['name']; // Set $url To Equal The Filename For Later Use
if ($_FILES['imagefile'.$i.'']['type'] == "image/jpg" || $_FILES['imagefile'.$i.'']['type'] == "image/jpeg" || $_FILES['imagefile'.$i.'']['type'] == "image/pjpeg") {
$file_ext = strrchr($_FILES['imagefile'.$i.'']['name'], '.'); // Get The File Extention In The Format Of , For Instance, .jpg, .gif or .php
$copy = copy($_FILES['imagefile'.$i.'']['tmp_name'], "$idir" . $_FILES['imagefile'.$i.'']['name']); // Move Image From Temporary Location To Permanent Location

if ($copy) { // If The Script Was Able To Copy The Image To It's Permanent Location
print 'Image uploaded successfully.<br /><a href="'.$session->username.'/images/'.$url.'"><img src="'.$session->username.'/images/thumbs/'.$url.'"></a>'; // Was Able To Successfully Upload Image
$simg = imagecreatefromjpeg("$idir" . $url); // Make A New Temporary Image To Create The Thumbanil From
$currwidth = imagesx($simg); // Current Image Width
$currheight = imagesy($simg); // Current Image Height
if ($currheight > $currwidth) { // If Height Is Greater Than Width
$zoom = $twidth / $currheight; // Length Ratio For Width
$newheight = $theight; // Height Is Equal To Max Height
$newwidth = $currwidth * $zoom; // Creates The New Width
} else { // Otherwise, Assume Width Is Greater Than Height (Will Produce Same Result If Width Is Equal To Height)
$zoom = $twidth / $currwidth; // Length Ratio For Height
$newwidth = $twidth; // Width Is Equal To Max Width
$newheight = $currheight * $zoom; // Creates The New Height
}
$dimg = imagecreate($newwidth, $newheight); // Make New Image For Thumbnail
imagetruecolortopalette($simg, false, 256); // Create New Color Pallete
$palsize = ImageColorsTotal($simg);
for ($i = 0; $i < $palsize; $i++) { // Counting Colors In The Image
$colors = ImageColorsForIndex($simg, $i); // Number Of Colors Used
ImageColorAllocate($dimg, $colors['red'], $colors['green'], $colors['blue']); // Tell The Server What Colors This Image Will Use
}
imagecopyresized($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight); // Copy Resized Image To The New Image (So We Can Save It)
imagejpeg($dimg, "$tdir" . $url); // Saving The Image
imagedestroy($simg); // Destroying The Temporary Image
imagedestroy($dimg); // Destroying The Other Temporary Image
print 'Image thumbnail created successfully.'; // Resize successful
} else {
print '<font color="#FF0000">ERROR: Unable to upload image.</font>'; // Error Message If Upload Failed
}
} else {
print '<font color="#FF0000">ERROR: Wrong filetype (has to be a .jpg or .jpeg. Yours is '; // Error Message If Filetype Is Wrong
print $file_ext; // Show The Invalid File's Extention
print '.</font>';
}
}
}
?>
  #4 (permalink)  
Antiguo 04/01/2010, 19:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: subir multiples imagenes y crear thumbnail

te sugiero leer el manual al respecto
http://php.net/manual/en/features.file-upload.php

también hay ejemplos en las FAQ's y Wiki del foro de PHP
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 08/01/2010, 07:52
Avatar de blogger  
Fecha de Ingreso: diciembre-2005
Ubicación: frente al monitor
Mensajes: 398
Antigüedad: 18 años, 4 meses
Puntos: 12
Respuesta: subir multiples imagenes y crear thumbnail

Lo probé y si aparece el input de acuerdo al numero de imágenes que quiero subir, pero únicamente sube la imagen que viene en el primer input, las demás no las carga al servidor
__________________
http://exegesis-biblica.com/

Etiquetas: imagenes, multiples, subir, thumbnails
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:13.