Enlaces
Esta en:

documentos
Arriba
Bind-9
Bind-8
Ad+bind
Dhcp
Kdephp
Shell
Trucos
Php
Documentos
Cuestiones php
Fedora
Legal
W2000 xp
COMOS
Errores dns

[PHP-ES] Optimizar Script

Write haof XML files: Emiliano Horcada <emilianohorcada_at_gmail.com>
Fecha: Fri, 31 Mar 2006 11:28:50 -0300

Bueno, la situación es la siguiente:

Tengo en un sitio un administrador de contenidos en donde en una sección de
ese sitio puedo subir fotos para una especie de galeria.
El usuario puede subir la foto en el tamaño que quiera y por medio de una
función genero un resize de la imagen a un tamaño predefinido, achicando la
imagen de manera proporcional (copio la funciona abajo por si hay que
depurarla).
El inconveniente me surge frente al siguiente caso.
El sistema tiene que generar de la imagen que subo dos resize, uno de 150 x
150px y otro de 800 x 600px.
Si hago solamente el resize de 150x150 funciona bien, pero cuando pongo
también la llamada de la función para el resize de 800x600 la página tarda
mucho en cargar y caduca.
Ahora, esto no ocurre con todos los archivos de imagen que subo sino con
algunos.
Se me ocurrió que esto depende del peso de la imagen o del tamaño de la
imagen, pero no pude llegar a buen puerto todavía.

Les copio la función y la llamada a la función.
Los archivos de imagenes son subidos por un formulario en
enctype="multipart/form-data" y tomados con move_uploaded_file().
Alguna idea de que puede ser.

Por otro lado, influye en tiempos de ejecución el hecho de que suba los
archivos de esta manera a que los suba con la función FTP de PHP?.
Cual conviene?.

Gracias!

function resize($filename, $maxwidth, $maxheight, $newname)
{
    // Se obtienen las nuevas dimensiones
    list($width, $height) = getimagesize($filename);

    $sizes = newSize($width, $height, $maxwidth, $maxheight);

    $newwidth = $sizes[0];
    $newheight = $sizes[1];

    if($newwidth>$maxwidth || $newheight>$maxheight)
    {
        $newwidth = substr($newwidth,0,3);
        $newheight = substr($newheight,0,3);
    }

    // Cargar la imagen
    $thumb = imagecreatetruecolor($newwidth, $newheight);
    $source = imagecreatefromjpeg($filename);

    if($source!="")
    {
        // Redimensionar
        imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth,
$newheight, $width, $height);
        // Mostrar la nueva imagen
        imagejpeg($thumb,$newname);
        return true;
    } else {
        return false;
    }
}

function newSize($width, $height, $maxwidth, $maxheight)
{
    $percent = 1;
    if($height>$width)
    {
        if($height!=$maxheight)
        {
            if(round(($maxheight * 100) / $height)<100)
            {
                $percent = "0.".round(($maxheight * 100) / $height);
            } else {
                $percent = round($maxheight / $height);
            }
        }
    }
    else
    {
        if($width!=$maxwidth)
        {
            if(round(($maxwidth * 100) / $width)<100)
            {
                $percent = "0.".round(($maxwidth * 100) / $width);
            } else {
                $percent = round($maxwidth / $width);
            }
        }
    }

    $newwidth = $width * $percent;
    $newheight = $height * $percent;

    if($newwidth>$maxwidth || $newheight>$maxheight)
    {
         return newSize($newwidth, $newheight, $maxwidth, $maxheight);
    } else {
        $sizes = array($newwidth, $newheight);
    }
    return $sizes;

}
Nearby vie mar 31 2006 - 18:23:41 CEST

Este archivo fue generado por hypermail 2.2.0 : mié nov 07 2007 - 20:55:35 CET


Página Principal
Google

Web
dns.bdat.net

Visita nuestro proveedor:
www.bdat.net

Publicidad:

Impresenteibols:Humor Jazz, música en vivo