Skip to content


Irudien tamaina aldatuz

Class honekin web formulario bitartez igotzen diren irudiak tratatzeko modu azkar eta eroso bat da. Nik, nire zerbitzarian, Irudiak.class.php izenarekin gordetzen det, eta ondoren include baten bitartez erabiliko dudan orrira gehitzen dut.

Lehengo adibidea:

$img = new Irudiak;

if($img -> helbidea( /var/www/proba.jpg )){
    //header("Content-type: image/jpeg");
    $img -> thumb( 350, 248, $dirizena, 90);
}
if($img -> bertikala()){
    $img -> thumb( 248, 350, $dirizena, 90);
}

Bigarren adibidea:

$irudiaTR = new Irudiak;
if($irudiaTR -> helbidea( "IRUDIAK/img.jpg" )){
    header("Content-type: image/jpeg");
    $irudiaTR -> zabalera( 400 ,"", 90);
}

Irudiak.class.php orriko kodea

class Irudiak //ArgazkiakTratatu
{
    var $helbidea;
    var $zabalera;
    var $altuera;
    var $mota;
   
    function Irudiak( $mega = 40 ){
        //objetua sortzerakoan orriaren memoria aunditzen dugu
        ini_set( "memory_limit", $mega ."M" );
    }
   
    function thumb( $zabalera = 100, $altuera = 100, $izena = "", $kalitatea = 85 ){
   
        //proportzioak lortu jakiteko nondik moztu
        $aldea = ($zabalera * 100) / $this -> zabalera;
        $luzea = ($altuera * 100) / $this -> altuera;
       
        if( $aldea >= $luzea ){
            $originalaH = $this -> zabalera;
            $originalaB =  ((($altuera * 100) / $zabalera) * $this -> zabalera) / 100;
        }else{
            $originalaH = ((($zabalera * 100) / $altuera) * $this -> altuera) / 100;
            $originalaB =  $this -> altuera;
        }
       
        //originala eskuratzen dugu
        switch( $this -> mota ){
            case "gif":
                $jatorria = imagecreatefromgif( $this -> helbidea );
                break;
            case "jpg":
                $jatorria = imagecreatefromjpeg( $this -> helbidea );
                break;
            case "png":
                $jatorria = imagecreatefrompng( $this -> helbidea );
                break;
        }
       
        // Irudia lortzen dugu
        $emaitza = imagecreatetruecolor( $zabalera, $altuera );
       
        // Tamaña aldatzen da
        imagecopyresampled( $emaitza, $jatorria, 0, 0, 0, 0, $zabalera, $altuera, $originalaH, $originalaB );
        ImageDestroy( $jatorria );

        //emaitza itzuli edo gorde
        imagejpeg( $emaitza, $izena, $kalitatea );
        ImageDestroy( $emaitza );
       
        return TRUE;
       
    }
   
    function ram( $mota = 'KB' ) //erabilitako memoria erakusten du
    {
       
        $erabilitakoMemoria = memory_get_usage();
        switch( $mota ){
            case "B":
                $emaitza = $erabilitakoMemoria;
                break;
            case "KB":
                $emaitza = round( $erabilitakoMemoria/1024, 2);
                break;
            case "MB":
                $emaitza = round( ($erabilitakoMemoria/1024)/1024, 2);
                break;
        }
       
        return $emaitza;
    }
   
    function helbidea( $artxibo_helbidea ) //irudia eskuratzen dugu
    {
        if( $this -> ongi( $artxibo_helbidea ) ){
            $this -> helbidea = $artxibo_helbidea;
            $this -> BalioakGorde($artxibo_helbidea);
           
            return TRUE;
        }else{
            return FALSE;
        }
    }

    function ongi( $helbidea ) //irudia topatzen duen jakiteko
    {
        if( file_exists( $helbidea ) )
        {
            return TRUE;
        } else {
            return FALSE;
        }
    }
   
    function BalioakGorde( $artxiboa ) //datuak gordetzen digutugu ondorengo aldaketentzat
    {
        $array_img = getimagesize( $this -> helbidea );
        $this -> zabalera = $array_img[0];
        $this -> altuera = $array_img[1];
        switch( $array_img[2] )
        {
            case 1:
                $this -> mota = "gif";
                break;
            case 2:
                $this -> mota = "jpg";
                break;
            case 3:
                $this -> mota = "png";
                break;
        }
    }
    function zabalera( $zabalera, $izena = "", $kalitatea = 85 ){ //zabalera zahaztuta irudia itzuliko dugu
   
        switch( $this -> mota ){
            case "gif":
                $jatorria = imagecreatefromgif( $this -> helbidea );
                break;
            case "jpg":
                $jatorria = imagecreatefromjpeg( $this -> helbidea );
                break;
            case "png":
                $jatorria = imagecreatefrompng( $this -> helbidea );
                break;
        }

        //altuera berria kalulatzen dugu
        $altuera = ( $zabalera * $this -> altuera ) / $this -> zabalera;
       
        //altuera berria kalkulatu
        $zabalera_berria = $zabalera;
        $altuera_berria = $altuera;
       
        //altuera zaharrak lortu
        $altuera_originala      = $this -> altuera;
        $zabalera_originala     = $this -> zabalera;
   
        //deformaziorik ez
        if( $zabalera > $altuera ){
            $altuera_originala = ( $altuera * $this -> zabalera ) / $zabalera;
        } else {
            $zabalera_originala = ( $zabalera * $this -> altuera ) / $altuera;
        }

        // Irudia lortzen dugu
        $emaitza = imagecreatetruecolor( $zabalera_berria, $altuera_berria );
   
        // Tamaña aldatzen da
        imagecopyresampled( $emaitza, $jatorria, 0, 0, 0, 0, $zabalera_berria, $altuera_berria, $zabalera_originala, $altuera_originala );
        ImageDestroy( $jatorria );

        //emaitza itzuli edo gorde
        imagejpeg( $emaitza, $izena, $kalitatea );
        ImageDestroy( $emaitza );
       
        return TRUE;
    }

    function altuera( $altuera, $izena = "", $kalitatea = 85 ){ //altuera zahaztuta irudia itzuliko dugu
       
        switch( $this -> mota ){
            case "gif":
                $jatorria = imagecreatefromgif( $this -> helbidea );
                break;
            case "jpg":
                $jatorria = imagecreatefromjpeg( $this -> helbidea );
                break;
            case "png":
                $jatorria = imagecreatefrompng( $this -> helbidea );
                break;
        }
       
        //altuera berria kalulatzen dugu
        $zabalera = ( $altuera *  $this -> zabalera ) / $this -> altuera;

        //altuera berria kalkulatu
        $zabalera_berria = $zabalera;
        $altuera_berria = $altuera;
       
        //altuera zaharrak lortu
        $altuera_originala      = $this -> altuera;
        $zabalera_originala     = $this -> zabalera;
   
        //deformaziorik ez
        if( $zabalera > $altuera ){
            $altuera_originala = ( $altuera * $this -> zabalera ) / $zabalera;
        } else {
            $zabalera_originala = ( $zabalera * $this -> altuera ) / $altuera;
        }

        // Irudia lortzen dugu
        $emaitza = imagecreatetruecolor( $zabalera_berria, $altuera_berria );
       
        // Tamaña aldatzen da
        imagecopyresampled( $emaitza, $jatorria, 0, 0, 0, 0, $zabalera_berria, $altuera_berria, $zabalera_originala, $altuera_originala );
        ImageDestroy( $jatorria );

        //emaitza itzuli edo gorde
        imagejpeg( $emaitza, $izena, $kalitatea );
        ImageDestroy( $emaitza );
       
        return TRUE;
    }
   
    function horizontala() //bidali horizontala true
    {  
        if( $this -> zabalera > $this -> altuera ){
            return TRUE;
        } else {
            return FALSE;
        }
    }
   
    function bertikala() //bidali bertikala true
    {  
        if( $this -> zabalera < $this -> altuera ){
            return TRUE;
        } else {
            return FALSE;
        }
    }
       
    function info() //irudiaren informazioa bidaltzen du
    {
        $datuak = array();
        $datuak["helbidea"] =   $this -> helbidea;
        $datuak["zabalera"] =   $this -> zabalera;
        $datuak["altuera"]  =   $this -> altuera;
        $datuak["mota"]     =   $this -> mota;
       
        return $datuak;
    }
}

Posted in Php.

0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.