Avatar billede zurekk Nybegynder
07. maj 2007 - 15:54 Der er 8 kommentarer og
2 løsninger

jpg, gif, png etc.

Jeg har dette billede script til resize:

function resize( $filename, $newfilename, $max)
{
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $max / $ow;
    $hscale = $max / $oh;
    $scale = ( $hscale > $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $max, $max );
    if($nh > $nw)
    {
        $diff = ($nh - $max)/2;
        imagecopyresampled( $dstim, $srcim, 0, 0, 0, $diff, $max, $max+$diff, $ow, $oh);
    }
    elseif($nh < $nw)
    {
        $diff = ($nw - $max)/2;
        imagecopyresampled( $dstim, $srcim, 0, 0, $diff, 0, $max+$diff, $max, $ow, $oh);
    }
    else
    {
        imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $max, $max, $ow, $oh);
    }
    imagejpeg( $dstim, $newfilename, 100);
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return file_exists($newfilename);
}


Jeg vil gerne vide hvad jeg gør for at det også virker med png, og gif?

Er det bare at skifte jpeg ud med gif og png? Eller?

På forhånd tak
Avatar billede nyhuus Nybegynder
07. maj 2007 - 17:03 #1
$srcim = imagecreatefromjpeg( $filename );

du kan lave en med
$srcim = imagecreatefromgif( $filename );

$srcim = imagecreatefrompng( $filename );
Avatar billede jakobdo Ekspert
07. maj 2007 - 17:03 #2
Du skal rette disse linier med png eller gif:
$srcim = imagecreatefromjpeg( $filename );
imagejpeg( $dstim, $newfilename, 100);
Avatar billede jakobdo Ekspert
07. maj 2007 - 17:04 #3
imagecreatefrompng() eller imagecreatefromgif()

imagegif() eller imagepng()
Avatar billede zurekk Nybegynder
07. maj 2007 - 17:28 #4
Jo tak, kan se i svarede på samme tid(næsten), så hvis i begge smider et svar =)
Avatar billede jakobdo Ekspert
07. maj 2007 - 17:50 #5
Svar! :o)
Man burde evt. rette funktionen til, så den kan klare flere filtyper og selv håndtere hvilken type der er tale om.
Avatar billede jakobdo Ekspert
07. maj 2007 - 18:03 #6
Måske en funktion ala denne stil:

function resize( $filename, $newfilename, $max)
{
    $ext = strtolower(end(explode('.',$filename)));
    switch($ext)
    {
        case 'jpg':
        case 'jpeg':
        case 'jpe':
            $srcim = imagecreatefromjpeg( $filename );
            break;
        case 'gif':
            $srcim = imagecreatefromgif( $filename );
            break;
        case 'png':
            $srcim = imagecreatefrompng( $filename );
            break;
        default:
            return false;
    }
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $max / $ow;
    $hscale = $max / $oh;
    $scale = ( $hscale > $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $max, $max );
    if($nh > $nw)
    {
        $diff = ($nh - $max)/2;
        imagecopyresampled( $dstim, $srcim, 0, 0, 0, $diff, $max, $max+$diff, $ow, $oh);
    }
    elseif($nh < $nw)
    {
        $diff = ($nw - $max)/2;
        imagecopyresampled( $dstim, $srcim, 0, 0, $diff, 0, $max+$diff, $max, $ow, $oh);
    }
    else
    {
        imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $max, $max, $ow, $oh);
    }
    switch($ext)
    {
        case 'jpg':
        case 'jpeg':
        case 'jpe':
            imagejpeg( $dstim, $newfilename, 100);
            break;
        case 'gif':
            imagegif( $dstim, $newfilename);
            break;
        case 'png':
            imagepng( $dstim, $newfilename);
            break;
    }
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return file_exists($newfilename);
}
Avatar billede nyhuus Nybegynder
07. maj 2007 - 20:16 #7
Her er mit svar.

Ja jacobdo det ville jeg os gøre hvis jeg skulle lave sådan et script :)
Avatar billede zurekk Nybegynder
12. maj 2007 - 00:02 #8
Smider du også et svar jakob?
Avatar billede jakobdo Ekspert
13. maj 2007 - 19:01 #9
Du får lige et svar her ja!
Avatar billede jakobdo Ekspert
15. maj 2007 - 17:23 #10
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester