Avatar billede nc85 Nybegynder
09. januar 2007 - 09:32 Der er 4 kommentarer og
1 løsning

Billede upload i flere varianter

Hey alle..
Kunne godt bruge et script der gjorde at hvis du uploadede et billede (større billede) at så det blev resized i flere størrelser!

Lad os sige man har alle billede bredder i databasen, 1 på 100px, 1 på 200px og 1 på 300px, så skal man uploade billedet fra en formular, det billede man uploader er fx 600px, så i når du har uploaded billeder skal det være resized i 3 forskellige størrelser, dem som lå i databasen...

De skal selvfølgelig gemmes under forskellige navne, og stierne til billederne gemmes i databasen.

Håber det er forklaring nok ?
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 10:17 #1
Ville nok mene at det var smartere at resize billedet til en størelse f.eks 1024x768 når det kommer op og så lægge det på serveren, og når billedet så bliver kaldt så resize det til den størelse det skal vises i og etc, smide navnet på websitet i hjørnet, dette vil spare dig for en masse plads på serveren.
Avatar billede coderdk Praktikant
09. januar 2007 - 10:56 #2
net-base.dk, Det trækker tænder ud af webserveren - Det tager tid - Hvis man har pladsen, bør man resize én gang ;)

nc85, Hvis du har din eksisterende upload med ét billede kan du jo bare resize flere gange?

Kun til JPEG (kan nemt rettes til): http://php.coder.dk/resizeimg.php

Så er det jo bare:

Hvis f.eks. du har uploadet en fil: "600/etbillede.jpg":

resize( $denUploadedeFil, "300/" . basename( $denUploadedeFil ) );
resize( "300/" . $denUploadedeFil, "200/" . basename( $denUploadedeFil ) );
resize( "200/" . $denUploadedeFil, "100/" . basename( $denUploadedeFil ) );

Et helt script:

<form enctype="multipart/form-data" method="post">
    <input type="file" name="ufile">
    <input type="submit" value="Go!">
</form>
<?php

    // Husk at folderne 600, 300, 200 og 100 skal være skrivbare for webserveren
    // i.e. chmod 777

    if ( !empty( $_FILES['ufile'] ) )
    {
        if ( is_uploaded_file( $_FILES['ufile']['tmp_name'] ) )
        {
            $bname = basename( $_FILES['ufile']['name'] );
            if ( move_uploaded_file( $_FILES['ufile']['tmp_name']
                ,"600/" . $bname ) )
            {
                resize( "600/$bname", "600/$bname", 600, 1000000 );
                resize( "600/$bname", "300/$bname", 300, 1000000 );
                resize( "300/$bname", "200/$bname", 200, 1000000 );
                resize( "200/$bname", "100/$bname", 100, 1000000 );
                // Gem evt $bname i databasen
            }
        }
    }

    function resize( $filename, $newfilename, $maxw, $maxh )
    {
        $srcim = imagecreatefromjpeg( $filename );
        $ow = imagesx( $srcim );
        $oh = imagesy( $srcim );
        $wscale = $maxw / $ow;
        $hscale = $maxh / $oh;
        $scale = ( $hscale < $wscale ? $hscale : $wscale );
        $nw = round( $ow * $scale, 0 );
        $nh = round( $oh * $scale, 0 );
        $dstim = imagecreatetruecolor( $nw, $nh );
        imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
        imagejpeg( $dstim, $newfilename, 85 );
        imagedestroy( $dstim );
        imagedestroy( $srcim );
    }

?>
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 11:13 #3
Ja men kører du på et webhotel hvor man ikke betaler for CPU tid men for Harddisk plads bør man tænke på sin pengepung før man tænker på tiden serveren skal resize billedet i, og det at resize et billed er ikke noget som tager sindsyg lang tid så det er ret begrænset hvor meget tid ekstra det vil tage...

Men det er jo en smags sag i sidste ende hvad man helst vil have ½sec ekstra reqponse tid eller en højere leje på webhotellet... Har man egen server bør man self resize billederne en gang til de størrelser man har brug for.
Avatar billede nc85 Nybegynder
09. januar 2007 - 15:51 #4
coderdk -> takker, lige det jeg havde brug for. lægger du et svar?
Avatar billede coderdk Praktikant
09. januar 2007 - 20:52 #5
Ok :)
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

Seneste spørgsmål Seneste aktivitet
22 min siden Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging