jueves, 24 de marzo de 2011

Procesar imágenes que suben a nuestra web con PHP

Saludos hace varios días andaba buscando algo que me sirviera para hacer las imágenes que suben a mi web livianas para que el navegador no le tome un siglo cargarlas cuando los usuarios abren sus perfiles... después de tanto buscar supe que la librería GD de php me lo permite, el problema resulto ser.. ¿como se hace? una vez pase por decenas de foros consulte muchas veces el manual de php no lograba resolver mi problema, entonces fue cuando decidí poner en practica todo lo leído y crear mis propios functions que me permitieran hacer las redimensiones y al tiempo hacer mis imágenes livianas con lo que logre que imágenes que antes pesaban 2 o 3 megas llegaran a pesar tan solo 60 o menos kb... sin mas preámbulos el código.


public function CalcularOrientacion($ancho,$alto){
        if($ancho >= $alto){//compruebo mayor de los valores alto o ancho
            $ref=array($ancho,$alto);
        }
        else
        {
            $ref=array($alto,$ancho);
        }
        return $ref;
    }

    public function CalcularRatio($ancho, $alto, $tope){

        $ref = $this->CalcularOrientacion($ancho, $alto);
        if($ref[0] <= $tope){
            $nuevoTamano = $ref;
        }else
        {
             $difTamano = $ref[0] - $tope;
             $facConversion = $difTamano /$ref[0];
             $tamDos = intval($ref[1]-($ref[1]*$facConversion));

             if($ref[0] == $ancho){
                 $nuevoTamano = array($tope,$tamDos);
             }else
             {
                 $nuevoTamano = array($tamDos,$tope);
             }
        }

        return $nuevoTamano;

    }

    function ProcesarImagen($nombre_archivo,$destino,$tope){
        ini_set("memory_limit","256M");
        // Archivo y nuevo tamaño
        $foto = getimagesize($nombre_archivo);
        $foto_nt = $this->CalcularRatio($foto[0], $foto[1], $tope);

//obtener extencion
        $ext_temp = split("/", $foto['mime']);
        $ext = $ext_temp[count($ext_temp)-1];

        // Tipo de contenido
        //header('Content-type: image/jpeg');

        // Obtener nuevos tamaños
        list($ancho, $alto) = getimagesize($nombre_archivo);
        $nuevo_ancho = $ancho * $porcentaje;
        $nuevo_alto = $alto * $porcentaje;

        // Carcgar
        $thumb = imagecreatetruecolor($foto_nt[0], $foto_nt[1]);

        if($ext == "jpg" || $ext == "JPG" || $ext == "jpeg" || $ext == "JPEG"){
        $origen = imagecreatefromjpeg($nombre_archivo);
        }

        if($ext == "png" || $ext == "PNG"){
        $origen = imagecreatefrompng($nombre_archivo);
        }

        if($ext == "gif" || $ext == "GIF"){
        $origen = imagecreatefromgif($nombre_archivo);
        }

        // Cambiar el tamaño
        imagecopyresized($thumb, $origen, 0, 0, 0, 0, $foto_nt[0], $foto_nt[1], $foto[0], $foto[1]);

        // Imprimir


        if($ext == "jpg" || $ext == "JPG" || $ext == "jpeg" || $ext == "JPEG"){
            imagejpeg($thumb,$destino);
        }

        if($ext == "png" || $ext == "PNG"){
            imagepng($thumb,$destino);
        }

        if($ext == "gif" || $ext == "GIF"){
            imagegif($thumb,$destino);
        }
    }

con la ayuda de estos tres functions se puede resolver el problema del peso de las imágenes... sirve ya lo comprobé lo estoy aplicando en mi tesis de grado.. para hacerlo funcionar hay que tener los tres en una clase o en un script recordando siempre que si se usan en un script hay que omitir el $this-> delante de los functions.

para usarlo hay que hacer algo como esto:

ProcesarImagen("mi_foto.jpg", "img/nueva_foto.jpg", 440);

esto crear la nueva imagen en el nuevo destino, 440 es el tope que tendrá la imagen en el mas grande de sus lados sea este el ancho o el largo el otro lado tomara su nuevo tamaño manteniendo la relación original de la imagen.

espero que esto les ayude créanme que hubiese querido encontrar algo como esto, me hubiese ahorrado una semana de trabajo.

lunes, 7 de marzo de 2011

VLAN en packet tracer, mas corto mas sencillo

saludos..!

en esta entrada les muestro de una forma mas corta, simple y eficiente la configuración de las VLAN, siempre es bueno recordar que la teoría es esencial para el entendimiento de los vídeos, por tal los exhorto a investigar sobre el tema, verán lo fácil que es y lo practico que resulta.

recuerden siempre agrandar la pantalla y ponerlo si es posible en HD para apreciar de mejor forma el código.



sábado, 8 de enero de 2011

Configuracion de VLAN + DHCP en Packet Tracer

Cuando se quieren tener una red local dividida por departamentos las VLAN constituyen una excelente opción. Pensemos en que tenemos un edificio de dos pisos en los cuales existen tres departamentos diferentes: Ventas, Soporte, Mercadeo. la forma en que habitualmente se organizarían las áreas seria ubicando los equipos de las mismas en un mismo piso y conectados a un mismo SWITCH, pero si hay trabajadores de una área en otro piso o incluso en otra sucursal ¿Que hay que hacer? la solución es recurrir a las VLAN (redes de área local virtuales por su sigla en ingles).

El empleo de VLANs es de gran utilidad, estas ahorran materiales ademas de permitir una división de sub redes entre departamentos independientemente del lugar en el cual los equipos de la misma se encuentren. Para mas información acerca del tema Wikipedia, ahora a lo que vinimos como se configuran. les dejo el vídeo con la configuración de ejemplo.






Espero que la explicación les sea útil!!

viernes, 7 de enero de 2011

Configurar DHCP + OSPF + AgentRelay en PacketTracer

Bueno visitantes, sufrí con esto cuando en mi momento me toco, por eso, ahora quiero ayudarles. cuando se tienen dos redes locales y estas a su vez se le asignan direcciones IP a trabes de DHCP, claro esta los pool solo están en un solo router.

en este caso les voy a mostrar como configurar DHCP + OSPF + AgentRelay dicen que una imagen vale mas que mil palabras, yo les muestro un vídeo con el proceso:






Espero que les sirva mi vídeos y si tiene alguna duda en los comentarios expresenlas y les ayudare en lo que pueda.