Avatar billede flim Nybegynder
30. april 2005 - 14:36 Der er 11 kommentarer og
1 løsning

Autmoatisk gør billede mindre

Hej folkens.

Jeg vil gerne have at folk kan uploade billeder til deres profil. Billedet kan være hvilken som helst størrelse, skal bare være jpg.

Jeg vil så gerne have en funktion som sørger for at billedet ikke er større end 64X64px.

Dvs at jeg har det originale billede og skal så smides ned i max 64X64 uden at miste proportioner.

Dvs hvis jeg fx har et billede på 800X600, skal billedet laves om til 64X48 og så uploades.

Er der en der kan hjælpe mig på rette vej. Det vigtigste er at det kun er det lille billede der bliver uploadet så de fylder mindst muligt på serveren.

Håber I kan hjælpe
Avatar billede coderdk Praktikant
30. april 2005 - 14:52 #1
Denne funtion resizer et billede og gemmer i et nyt navn af eget valg, med JPEG-kvalitet 85:

<?php

    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 );
    }

    resize( "billede.jpg", "nytbillede.jpg", 64, 64 );

?>
Avatar billede coderdk Praktikant
30. april 2005 - 14:53 #2
Det er naturligvis billedet på 800x600 der bliver uploadet, og derefter resizet på serveren ;)
Avatar billede flim Nybegynder
30. april 2005 - 14:54 #3
Tak for koden, men jeg vil ikke have en fast størrelse hver gang.

Hvis jeg uploader et billede på 100X400 fx, så bliver det vildt gnidret hvis det bliver 64X64. Kan man ikke lave det så det bliver 16X64 for på den måde at holde billedet proportioner korrekt?
Avatar billede flim Nybegynder
30. april 2005 - 14:56 #4
Og coderdk...

Er det ikke muligt at resize FØR billedet smides på serveren?

Det er det måske ikke?
Avatar billede coderdk Praktikant
30. april 2005 - 15:04 #5
Jo, naturligvis ;) Men så skal dine brugere SELV gøre det med Photoshop eller et andet lignende program. PHP kører jo serverside, derfor kan du kun gøre det på serveren, derfor skal billedet uploades før det kan behandles ;)

Selvom du giver min resize funktion 64,64 så beholder den proportionerne korrekt, de 64x64 betyder bare MAX 64 bred og MAX 64 høj, så justerer den selv ;)
Avatar billede flim Nybegynder
30. april 2005 - 15:09 #6
Ok ok - vidste ikke at det var en max-størrelse.

Jeg roder lige lidt med din kode, og vender tilbage senere...
Avatar billede flim Nybegynder
30. april 2005 - 16:10 #7
Gider du prøve at smide et billlede op: http://boysne.dk/upload/upload_gbook.php

og så fortælle mig hvorfor den skriver som den gør.

Du får kode senere hvis du gerne vil se.

Fortstår ikke hvad jeg gør galt da den nemt kan vise det oprindelige billede
Avatar billede coderdk Praktikant
30. april 2005 - 16:18 #8
Der bliver skrevet et billede ud til skærmen - Hvordan ser koden ud?
Avatar billede flim Nybegynder
30. april 2005 - 16:19 #9
Hmm - tror den virker nu. Gider du prøve en gang til?

Den fejler dog med png men kan jeg nemt fikse
Avatar billede coderdk Praktikant
30. april 2005 - 16:21 #10
Ja, det ser fint ud nu ;)
Avatar billede flim Nybegynder
30. april 2005 - 16:22 #11
Smukt - jamen så siger jeg tak for hjælpen :-)
- og god weekend
Avatar billede coderdk Praktikant
30. april 2005 - 16:23 #12
Selvtak og i lige måde :)
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