Foros del Web » Programando para Internet » PHP »

Crear 2 thumbnail a partir de una imagen

Estas en el tema de Crear 2 thumbnail a partir de una imagen en el foro de PHP en Foros del Web. Hola amigos, tengo un script con el que al subir una imagen al servidor me genera de dicha imagen una miniatura a escala, ahora bien, ...
  #1 (permalink)  
Antiguo 12/06/2007, 20:31
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 9 meses
Puntos: 4
Crear 2 thumbnail a partir de una imagen

Hola amigos, tengo un script con el que al subir una imagen al servidor me genera de dicha imagen una miniatura a escala, ahora bien, un cliente me ha solicitado que desea mostrar además de dicha miniatura una imagen más de tamaño intermedio entre ambas imagenes(la imagen original y la miniatura), aunque no necesariamente tiene que ser de medida exactamente intermedia sino que lo que desea es crear 2 thumbnails a partir de la imagen que sube, esto para qué?, pues resulta que le estoy haciendo un catálogo de productos el cual de momento viene funcionando muy bien pero lo que ahora desea es ingresar imágenes mucho más grandes y crear de esta 2 miniaturas, la más pequeña para organizarla en la galería de imágenes del catálogo, la intermedia para el detalle del producto y la más grande(la original) como opción a verse en mayor tamaño, no sé si me dejo entender.

El script que uso y que me genera sólo un thumbnail o sea lo más usual es el siguiente:

Código PHP:
<?php
    $max 
100000;
    
$xmax 150;
    
$ymax 150;
    
$nuevoDirectorio "imagenews/";
    function 
thumbnail($file,$dir,$ancho1,$alto1) {
        if(!
file_exists($dir.$file)) {
            return 
false;
        }
        if(!
is_dir($dir)) {
            return 
false;
        }
        
$a getimagesize($dir.$file);
        
$ancho $a['0'];
        
$alto $a['1'];
        
$comprime false;
        if (
$ancho $ancho1 || $alto $alto1) {
            
$comprime true;
        }
        if (
$a['0'] > $ancho1 && $a['1'] < $alto1) {
            
$alto = ($ancho1 $a['1']) / $a['0'];
            
$ancho $ancho1;
        }
        else if (
$a['0'] < $ancho1 && $a['1'] > $alto1) {
            
$ancho = ($alto1 * ($a['0'])) / $a['1'];
            
$alto $alto1;
        }
        else if (
$a['0'] > $ancho1 && $a['1'] > $alto1) {
            if (
$a['0']/$a['1']>=1) {
                
$alto = ($ancho1 $a['1'] ) / $a['0'];
                
$ancho $ancho1;
            }else {
                
$ancho = ($alto1 * ($a['0']) ) / $a['1'];
                
$alto $alto1;
            }
        }else {
            
$ancho $a['0'];
            
$alto $a['1'];
        }
        
$final = (int) strlen($file) - 4;
        
$nombre = (substr($file,0,$final));
        
$ext = (substr($file,-4,4));
        
$nombre $nombre.$ext;
        
$mini $dir."t_".$nombre;
        
$alto ceil($alto)+1;
        
$ancho ceil($ancho)+1;
        if (
$comprime) {
            if(
$ext == ".jpg" || $ext == ".jpeg" || $ext == ".JPG") {
                
$origen imagecreatefromjpeg($dir.$file);
                
$imgAncho imagesx($origen);
                
$imgAlto imagesy($origen);
                
$imagen imagecreatetruecolor($ancho,$alto);
                
imagecopyresized($imagen,$origen,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);
                
imagejpeg($imagen,$mini);
            }
        }
        return 
true;
        }
        if(
$enviar) {
            
$file $imgnews_name;
            
$nuevoNombre time().".jpg";
            if((
$imgnews_size $max) && (($imgnews_type == "image/jpeg") || ($imgnews_type == "image/pjpeg"))) {
                
move_uploaded_file($imgnews"imagenews/$nuevoNombre");
                
$ruta "$nuevoNombre";
                
$titulo stripslashes($_POST['titulo']);
                
$titulo strip_tags($titulo);
                
$timgnews "t_".$ruta;
                
$contenido $_POST['contenido'];
                
chmod("imagenews/$ruta"0777);
                
mysql_query("INSERT INTO catalogo (titulo,imgnews,timgnews,contenido) VALUES('".$titulo."','".$ruta."','".$timgnews."','".$contenido."')");
                echo 
"<strong>Producto correctamente.</strong>";
                
$a getimagesize("imagenews/$ruta");
                if ((
$a['0'] > 150) || ($a['1'] > 150)) {
                    
$thm thumbnail($nuevoNombre,$nuevoDirectorio,$xmax,$ymax);
                }
            }else {
                echo 
"<strong>El fichero ha de ser menor a $max bytes y ser de los tipos permitidos. <a href='javascript:history.back()'>Regresar</a></strong>";
            }
        }else {
?>
    <form name="formu" enctype="multipart/form-data" action="agregar.php" method="post">
        <p>La imagen a enviar no debe exceder los 100 KB de peso. Se aceptan &uacute;nicamente im&aacute;genes en formato <strong>.jpg</strong></p>
        <table style="width: 100%; border:0;">
            <tr>
                <td><strong>T&iacute;tulo:</strong></td>
                <td><input type="text" name="titulo" /></td>
            </tr>
            <tr>
                <td><strong>Imagen:</strong></td>
                <td><input name="imgnews" type="file" /></td>
            </tr>
            <tr>
                <td colspan="2"><strong>Contenido:</strong></td>
            </tr>
            <tr>
                <td colspan="2">
                    <textarea name="contenido" id="contenido" rows="10" style="width: 95%;"></textarea>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <input type="submit" name="enviar" value="Registrar datos" />
                    <input type="reset" value="Restablecer" />
                </td>
            </tr>
        </table>
    </form>
<?php
    
}
?>
Agradezco de antemano las respuestas y sugerencias que me puedan dar

Saludos
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 12:08.