Avatar billede hoejgaard Juniormester
09. november 2005 - 18:56 Der er 20 kommentarer og
1 løsning

billedreduktion i php

Jeg har et site hvor brugerne kan uploade billeder.
Disse billeder vil jeg gerne vise i størrelsen 40*40 pixels.
Men mit problem er at brugere uploader forsk. størrelser af billeder. Hvordan laver jeg dem smartest om til denne størrelse ??
Avatar billede Slettet bruger
09. november 2005 - 18:58 #1
Du kan få PHP til at resize billederne hvis de er i jpg eller png format, men hvis du "strechter" et billede vil det blive grimt uanset hvad. I øvrigt skal gdlib arkivet være aktiveret!
Avatar billede jakobdo Ekspert
09. november 2005 - 19:00 #2
Prøv denne funtion:

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $result = false;
    $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 );
    $result = imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}

Den virker dog kun til jpg.
Avatar billede hoejgaard Juniormester
09. november 2005 - 19:00 #3
hvad gør den jacobdo ??
Avatar billede jakobdo Ekspert
09. november 2005 - 19:02 #4
Den resizer et uploaded billede!
Efter upload, kalder du:
resize("gammeltbillede.jpg","nytbillede.jpg",40,40);
Avatar billede hoejgaard Juniormester
09. november 2005 - 19:04 #5
okay men er det ikke det samme som at gøre det i html med weight og height ??
Avatar billede hmortensen Nybegynder
09. november 2005 - 19:53 #6
width*

Og nej, med php kan du få billede til at fylde mindre, så siden med små billedere vil loade hurtigere.
Avatar billede ra__mus Nybegynder
09. november 2005 - 22:17 #7
ok.
Men hvis billedet der uploades ikke er kvadratisk, vil det så ikke blive presset sammen ved billedreduktionen til 40*40 pixels ???
Avatar billede jakobdo Ekspert
09. november 2005 - 22:25 #8
Nej, det beholder sin ratio.
Det gør denne kode:
$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 );
Avatar billede ra__mus Nybegynder
09. november 2005 - 22:36 #9
Hvilken størrelse har det så efter reduktionen ??
Avatar billede ra__mus Nybegynder
09. november 2005 - 23:10 #10
Jeg mener hvis du har et billede på feks. 160*120 pixels og uploader det,så laver du noget billedreduktion som i koden herover, og hvilken størrelse resulterer det så i??
Avatar billede Six Nybegynder
09. november 2005 - 23:15 #11
Den vil holde proportionerne og give: 40x30
Avatar billede ra__mus Nybegynder
09. november 2005 - 23:24 #12
hmm kan bare se på nogle sites at de har kvadratiske billeder, hvor det er brugere der har uploadet dem.. og alle brugere uploader jo ikke kvadratiske billeder..
Så der må da blive skåret noget fra.. eller hvordan gør de det ??
Avatar billede Six Nybegynder
09. november 2005 - 23:26 #13
Det gøres garanteret manuelt af en admin ved en godkendelse af billedet. Men det er bare et gæt :D
Avatar billede ra__mus Nybegynder
09. november 2005 - 23:29 #14
okay det er da en mulighed..
Avatar billede Six Nybegynder
09. november 2005 - 23:32 #15
Har dog set adminmoduler, hvor man får en skriggrøn firkant på de mål man vil have, frem oven på billedet og så kan vælge den del af billedet man vil have skåret ud. Der efter er billedet skåret til. Men jeg kan desværre ikke hjælpe dig med koden til noget sådan, da det er "over my head".
Avatar billede jakobdo Ekspert
10. november 2005 - 08:01 #16
ra___mus har du testet det kode jeg har sendt dig?
Det gør fuldstændig som du ønsker!
Test det, og stil så alle de spørgsmål du vil efterfølgende.
Avatar billede hoejgaard Juniormester
23. november 2005 - 12:21 #17
jacobdo
hmm kan bare se på nogle sites at de har kvadratiske billeder, hvor det er brugere der har uploadet dem.. og alle brugere uploader jo ikke kvadratiske billeder..
Så der må da blive skåret noget fra.. eller hvordan gør de det ??
Avatar billede jakobdo Ekspert
23. november 2005 - 19:07 #18
Det kan du jo så gøre ved altid at sige:
Alle billeder skal være 50x50, om de er 500x100 eller 50x200
Men den kode du har fået der, vil f.eks lave:
maxheight=50
maxwidth=50
500x100 = 50x10
50x200  = 13x50
osv...
Den beholder korrekt ratio.
Avatar billede hoejgaard Juniormester
21. september 2006 - 13:38 #19
læg et svar jacobdo
Avatar billede jakobdo Ekspert
21. september 2006 - 15:08 #20
Svar!
Avatar billede jakobdo Ekspert
21. september 2006 - 15:46 #21
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