Avatar billede xfox Nybegynder
17. november 2007 - 17:09 Der er 2 kommentarer og
1 løsning

Resize kvalitet

Jeg har et script der resizer et billede on the fly. Kvaliteten bliver også ok, men ikke super, og det er super jeg går efter. Om billedet kommer til at fylde 10 gange så meget, eller om det tager 10 gange så lang tid at lave, er underordnet, kvaliteten af billedet, og kvaliteten alene, har prioritet 1! Hvis jeg beholder billedet i sin oprindelige størrelse og scalere den ned, bliver det heller ikke godt. Hvordan optimere jeg koden så jeg får det bedste resulteat overhovedet?

Kode:

//Her skal filen flyttes fra
$fra    = $_FILES['upfil']['tmp_name'];

$size = getImageSize($_FILES['upfil']['tmp_name']); //Find højden og bredden på det billede jeg vil resize

list($foo, $bredde, $bar, $hojde) = explode("\"",$size[3]);

$forhold = $hojde/$bredde; //Hvor stor er højden i forhold til bredden?

//Find den nye højde og bredde
$bredde_ny = 133;
$hojde_ny = round($bredde_ny*$forhold);

//Load/opret billeder
//Hvilken type fil arbejder vi med?
$ext2    = strtolower(end(explode(".", $_FILES['upfil']['name'])));

//Hvis filen er et jpg, jpeg eller gif billede
if($ext2 == "jpeg" || $ext2 == "jpg")
{
$source = imagecreatefromjpeg($_FILES['upfil']['tmp_name']);
}
if($ext2 == "gif")
{
$source = imagecreatefromgif($_FILES['upfil']['tmp_name']);
}
$destination = imagecreatetruecolor($bredde_ny, $hojde_ny);

//Resize
imagecopyresampled($destination, $source, 0, 0, 0, 0, $bredde_ny, $hojde_ny, $bredde, $hojde);

//Gem
imagejpeg($destination, $_FILES['upfil']['tmp_name']);

//Hvilken type fil arbejder vi med?
$ext    = strtolower(end(explode(".", $_FILES['upfil']['name'])));

//Hvis filen er et jpg, jpeg eller gif billede
if($ext == "jpeg" || $ext == "jpg" || $ext == "gif")
{
$tid        = $_SERVER['REMOTE_ADDR'];

//Her giver vi billedet et andet navn, så der ikke kommer to ens navne…
$nytNavn = $tid . "_" . rand(1, 1000000) . "." . $ext;
$til        = "news/" . $nytNavn;
move_uploaded_file($fra, $til);
}
Avatar billede whatever Nybegynder
17. november 2007 - 19:17 #1
Prøv at ændre jpeg-kvaliteten. Du sætter den som tredje argument i imagejpeg(). Se mere på http://dk.php.net/manual/da/function.imagejpeg.php.
Avatar billede xfox Nybegynder
17. november 2007 - 19:47 #2
Filen kommer rigtig nok til at fylde 5 gange så meget, men kvaliteten er næsten den samme. Man skal kigge rigtig godt efter hvis man skal se forskel. Jeg kan resize det 1000 gange bedre i photoshop. Er det virkelig det bedste man kan gøre uden photoshop?
Avatar billede xfox Nybegynder
29. februar 2008 - 20:10 #3
åbenbart ikke :o)
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