Avatar billede Slettet bruger
09. maj 2010 - 09:40 Der er 3 kommentarer og
1 løsning

Resize ved upload

Nu har jeg i længere til prøvet at få mit upload-script til at resize mine billeder, men det vil ikke virke. Jeg bruger disse filer til at uploade billede:

upload.php


<form method="POST" enctype="multipart/form-data" action="load.php">

<p>

Billedbeskrivelse:<br />
<textarea name="beskrivelse" cols="30" rows="5" type="text"></textarea><br>

Billede:<br />
<input type="file" name="fil" size="21">

<input type="submit" value="Upload!" name="submit">

</p>

</form>



load.php


<?php
include ('connect.php');

$BilledeNavn = strtolower($_FILES['fil']['name']);
$beskrivelse = $_POST['beskrivelse'];
$BilledeTmp = $_FILES['fil']['tmp_name'];

$Destination = "billeder/".$BilledeNavn; // Så ender billedet i en mappe der hedder billeder

// så længe vi ikke har en ny fil, kører vi dette loop og ændrer filnavnet.
$oriBilledeNavn = $BilledeNavn;
while (file_exists($Destination)) {
  $BilledeNavn = rand(0,100000).$oriBilledeNavn;
  $Destination = "billeder/".$BilledeNavn;
}

move_uploaded_file($BilledeTmp, $Destination);

mysql_query("INSERT INTO billeder (billede,beskrivelse)VALUES('$BilledeNavn','$beskrivelse')");

echo "Billedet er blevet uploadet";

?>



Jeg vil gerne have scriptet til, automatisk at resize billederne når de bliver uploadet. Det skal være sådan, at billedest bredde bliver sat til 700px (f.eks) og højden skal så tilpasse sig dertil, så billedet beholder de rigtige højde*bredde forhold.

Skal der smides penge i, så giv mig et beløb. Dette er en hasteopgave :-)

Mvh
Kristoffer
Avatar billede Slettet bruger
09. maj 2010 - 12:29 #1
Dette script sætter max brede til 700px og max højde til 1200px

indsæt

imageResize($Destination, $Destination, 700, 1200);

under din

move_uploaded_file($BilledeTmp, $Destination);


Denne function skal du indsætte så den kan blive kaldt af dit script.

function imageResize( $filename, $newfilename, $maxw, $maxh, $quality=95 )
{
    $ext = strtolower(array_pop(explode(".", $filename)));
   
    switch($ext)
    {
        case 'jpeg':
        case 'jpe':
        case 'jpg':
            $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 );
   
    if($oh > $maxh || $ow > $maxw)
    {
        $wscale = $maxw / $ow;
        $hscale = ($maxh / $oh);
       
        //$scale = min( $hscale, $wscale ); //hvis billedet skal scaleres efter enten højde eller bredde
        //$scale = $hscale; //hvis billedet kun skal scaleres efter højde
        $scale = $wscale; //hvis billedet kun skal scaleres efter bredde

        $nw = round( $ow * $scale, 0 );
        $nh = round( $oh * $scale, 0 );
    }else{
        $nh = $oh;
        $nw = $ow;
    }
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
   
    switch($ext)
    {
        case 'jpeg':
        case 'jpe':
        case 'jpg':
            imagejpeg( $dstim, $newfilename, $quality );
        break;
        case 'gif':
            imagegif( $dstim );
        break;
        case 'png':
            imagesavealpha($dstim, true);
            $trans_colour = imagecolorallocatealpha($dstim, 0, 0, 0, 127);
            imagefill($dstim, 0, 0, $trans_colour);
            $png_q = floor( abs( $quality / 10 - 9.9 ) );
            imagepng( $dstim, $newfilename, $png_q );
        break;
        default:
            return false;
    }
   
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return true;
}
Avatar billede Slettet bruger
09. maj 2010 - 13:24 #2
Tak for det hurtige svar! :-)


//$scale = min( $hscale, $wscale ); //hvis billedet skal scaleres efter enten højde eller bredde
//$scale = $hscale; //hvis billedet kun skal scaleres efter højde


Er skråstregerne foran $scale meningen? Skal bare lige være sikker :-)

Og vil billederne så altid beholde de rigtige forhold mellem bredde og højde, så de ikke bliver stukket ud eller noget? :-)
Avatar billede Slettet bruger
09. maj 2010 - 13:34 #3
Ja de er meningen. Du kan slette de to linjer hvis du vil.

Billederne holder deres forhold.
Avatar billede Slettet bruger
09. maj 2010 - 13:36 #4
I love you! Tusind tak!
100 velfortjente point til dig :-)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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