• Moderatore

    Problema con il resize di immagini

    Ciao aragazzi, premetto che il php lo uso veramente poco, quindi perdonate eventuali castronerie...

    vi presento il problema, ho creato uno script per il resize di immagini, lo script funziona alla grande, però non riesco a settare il colore dello sfondo, e tutte le immagini tagliate presentano delle fastidiose bande nere (tipo quelle del 16:9)...

    Questo è il codice:

    
    
    function ResizeProportionalImage($nw, $nh, $source, $stype, $dest="", $ca="", $cb="",$cc=""){
        switch($stype){
                case "stream":
                    $simg = imagecreatefromstring($source);
                    break;
                case IMAGETYPE_GIF:
                        $simg = imagecreatefromgif($source);
                        break;
                    case IMAGETYPE_JPEG:
                        $simg = imagecreatefromjpeg($source);
                            break;
                    case IMAGETYPE_PNG:
                        $simg = imagecreatefrompng($source);
                            break;
            }
            $w =  imagesx($simg); 
            $h =  imagesy($simg); 
            
            $dimg = imagecreatetruecolor($nw, $nh);
            imagealphablending($dimg, false);
            //background
            if (!$ca=="" && !$cb=="" && !$cc=="") {
                $bg = imagecolorallocate ( $dimg, $ca, $cb, $cc );
                //$bg = imagecolorallocate ( $dimg, 255, 255, 255 );
            }else{
            
                $bg = imagecolorallocate ( $dimg, 255, 255, 255 );
            }
           
      
        if ($w/$h>$nw/$nh){
            $imgTempResize = imagecreatetruecolor($nw, ($h * $nw / $w));
            imagecopyresampled($imgTempResize, $simg, 0, 0, 0, 0, $nw, ($h * $nw / $w), $w, $h);
        }else{
            $imgTempResize = imagecreatetruecolor(($w * $nh / $h), $nh);
            imagecopyresampled($imgTempResize, $simg, 0, 0, 0, 0, ($w * $nh / $h), $nh, $w, $h);
        }
        
    
        $w = imagesx($imgTempResize);
            $h = imagesy($imgTempResize);
        
        
        $xstart = ($w/2) - ($nw/2);
        $ystart = ($h/2) - ($nh/2);
        $xend = $xstart + $nw;
        $yend = $ystart + $nh;
       
        //CROPPO
        imagecopy($dimg, $imgTempResize, 0,0, $xstart, $ystart, $nw, $nh);
        
            imagecopyresampled($dimg, $imgTempResize, $xend, $yend, 0, 0, $nw, $nh, $w, $h );
        //imagefill ( $dimg, 15, 15, $bg );
            
            if($dest!=?){
                imagejpeg($dimg,$dest,100);
            }else{
                imagejpeg($dimg); 
                //return $dimg;
            }
             imagedestroy($simg);
           imagedestroy($dimg);
             imagedestroy($imgTempResize);
    }
    
    

    come potete vedere ho implementato imagefill (che ora è commentato) però invece di riempirmi tutta l'immagine mi toglie solo una banda (per la cronaca quella a sx dell'immagine)

    Ringrazio in anticipo coloro che vogliono darmi una mano

    :ciauz::ciauz: